在iOS 10发布之前,我使用以下代码获取录像机的视频和音频捕获:
for device in AVCaptureDevice.devices() { if (device as AnyObject).hasMediaType( AVMediaTypeAudio ) { self.audioCapture = device as? AVCaptureDevice } else if (device as AnyObject).hasMediaType( AVMediaTypeVideo ) { if (device as AnyObject).position == AVCaptureDevicePosition.back { self.backCameraVideoCapture = device as? AVCaptureDevice } else { self.frontCameraVideoCapture = device as? AVCaptureDevice } } }
当iOS 10最终问世时,我在运行代码时收到以下警告。请注意,我的录像机仍可以正常运行约2周。
在iOS 10.0中不建议使用“ devices()”:请改用AVCaptureDeviceDiscoverySession。
今天早上运行代码时,录像机停止工作。xCode8没有给我任何错误,但是相机捕获的PreviewLayer是完全白色的。当我开始记录时,出现以下错误:
错误域= AVFoundationErrorDomain代码= -11800“操作无法完成” UserInfo = {NSLocalizedDescription =操作无法完成,NSUnderlyingError = 0x17554440 {Error Domain = NSOSStatusErrorDomain Code = -12780“(null)”},NSLocalizedFailureReason = An发生未知错误(-12780)}
我认为这与我使用不赞成使用的方法有关AVCaptureDevice.devices()。因此,我想知道如何使用它AVCaptureDeviceDiscoverySession?
AVCaptureDevice.devices()
AVCaptureDeviceDiscoverySession
提前谢谢你的帮助!
您可以通过以下方式获得前置摄像头:
AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .front)
后置摄像头:
AVCaptureDevice.default(.builtInWideAngleCamera, for: AVMediaType.video, position: .back)
和麦克风:
AVCaptureDevice.default(.builtInMicrophone, for: AVMediaType.audio, position: .unspecified)