ios - 设置时 AVCapturedevice 返回 nil
问题描述
我正在尝试通过以下方式设置 2 个 AVCapturedevices:特别是 frontCamera 和 backCamera:
override func viewDidLoad() {
super.viewDidLoad()
setCaptureSession()
setupDevice()
setUpInputOutput()
}
在 viewDidLoad 我调用这个函数分别执行此操作:
func setCaptureSession(){
captureSession.sessionPreset = AVCaptureSession.Preset.photo
}
func setupDevice(){
frontCamera = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .front)
backCamera = AVCaptureDevice.default(.builtInWideAngleCamera, for: .video, position: .back)
currentCamera = backCamera
}
即使很难,我认为我在运行应用程序时正确设置了后置摄像头,但在此功能中出现错误:
func setUpInputOutput(){
do{
let captureDeviceInput = try AVCaptureDeviceInput(device: currentCamera!)
captureSession.addInput(captureDeviceInput)
photoOutput?.setPreparedPhotoSettingsArray([AVCapturePhotoSettings(format: [AVVideoCodecKey : AVVideoCodecType.jpeg])], completionHandler: nil)
}catch{
print(error.localizedDescription)
}
}
基本上,当我尝试使用设备currentCamera设置 AVCapturedeviceInput 时,我收到一个错误,因为 currentCamera 为零。我不明白为什么它是 nil 以及我能做些什么来解决这个问题。
我将 Xcode 11 与 Swift 4 一起使用。
解决方案
推荐阅读
- docker - 在 Kitematic (Docker for Mac) 中更改了 SA 密码,我丢失了 localhost 中的所有数据库
- javascript - Javascript:条件函数onClick按钮
- r - 使用 R,我尝试 1)子集 191 个 .txt 文件,然后 2)将生成的较小数据集合并到一个文件中。
- python - 检查两个无序序列是否相等
- jwt - 使用 JWT 身份验证的 laravel 5.7 中不存在身份验证控制器
- html - 创建在鼠标悬停时展开的号召性用语按钮
- powershell - Invoke-WebRequest 未被识别为 cmdlet Windows 7 Powershell 的名称
- regex - 在两组字符之间获取一组目标字符
- c# - C# Selenium - 抛出异常:'OpenQA.Selenium.StaleElementReferenceException'
- r - 无法写入 hdf5 文件:H5Dcreate 中的错误