

dependencies: [
.package(url: "https://github.com/William-Weng/WWDualCamera.git", .upToNextMajor(from: "1.2.0"))
]
| 参数 |
说明 |
| multiSession |
AVCaptureMultiCamSession |
| isMultiCamSupported |
是否支持多镜头同时动作 |
| isRunning |
是否正在预览画面 |
| supportCount |
当前设备支持的最大同时使用镜头数 |
| 函数 |
说明 |
| start() |
开始执行 |
| stop() |
关闭执行 |
| addInputs(_:isConnections:) |
加入额外装置输入 (可以不连接) |
| addOutputs(_:isConnections:) |
加入额外资源输出 (可以不连接) |
| configuration(action:) |
相关的设定 (切换硬件) |
| sessionOutputs(delegate:inputs:videoGravity:stabilizationMode:) |
产生输出信息 |
| removeInputs(_:) |
移除输入装置 |
| removeAllInputs() |
移除所有输入装置 |
| removeOutputs(_:) |
移除输出装置 |
| removeAllOutputs() |
移除所有输出装置 |
| canAddConnection(_:) |
加入新的连接 |
| canRemoveConnection(_:) |
安全的移除连接 |
| cost() |
硬件 / 系统的用量指标 |
import UIKit
import AVFoundation
import WWDualCamera
final class ViewController: UIViewController {
@IBOutlet weak var mainView: UIView!
@IBOutlet weak var subView: UIView!
private var cameraOutputs: [AVCaptureVideoDataOutput] = []
private var cameraPreviewLayers: [AVCaptureVideoPreviewLayer] = []
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
initSetting()
_ = WWDualCamera.shared.start()
}
}
private extension ViewController {
func initSetting() {
let inputs: [WWDualCamera.CameraSessionInput] = [
(frame: mainView.frame, deviceType: .builtInWideAngleCamera, position: .back),
(frame: subView.frame, deviceType: .builtInWideAngleCamera, position: .front),
]
let outputs = WWDualCamera.shared.sessionOutputs(inputs: inputs)
for (index, info) in outputs.enumerated() {
guard let output = info.output,
let previewLayer = info.previewLayer
else {
return
}
if (index == 1) { previewLayer.cornerRadius = subView.frame.width * 0.5 }
cameraOutputs.append(output)
cameraPreviewLayers.append(previewLayer)
view.layer.addSublayer(previewLayer)
}
}
}