我做了一个成功的录像程序,但它没有音频?我该怎么做才能解决这个问题?我在我的info.plist中正确设置了音频权限。我正在使用AVCaptureFileOutputRecordingDelegate。
override func viewWillAppear(_ animated: Bool) {
let deviceDiscoverySession = AVCaptureDeviceDiscoverySession(deviceTypes: [AVCaptureDeviceType.builtInDuoCamera, AVCaptureDeviceType.builtInTelephotoCamera,AVCaptureDeviceType.builtInWideAngleCamera], mediaType: AVMediaTypeVideo, position: AVCaptureDevicePosition.back)
for device in (deviceDiscoverySession?.devices)!{
if(device.position == AVCaptureDevicePosition.back){
do{
let input = try AVCaptureDeviceInput(device: device )
if captureSession.canAddInput(input){
captureSession.addInput(input)
}
// sessionOutput.videoSettings = [(kCVPixelBufferPixelFormatTypeKey as NSString) : NSNumber(value: kCVPixelFormatType_420YpCbCr8BiPlanarFullRange as UInt32)]
sessionOutput.alwaysDiscardsLateVideoFrames = true
if(captureSession.canAddOutput(sessionOutput) == true){
captureSession.addOutput(sessionOutput)
let previewLayer: AVCaptureVideoPreviewLayer = {
let preview = AVCaptureVideoPreviewLayer(session: self.captureSession)
preview?.bounds = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height)
preview?.position = CGPoint(x: self.view.bounds.midX, y: self.view.bounds.midY)
preview?.videoGravity = AVLayerVideoGravityResize
return preview!
}()
view.layer.insertSublayer(previewLayer, at: 0)
output = AVCaptureMovieFileOutput()
let maxDuration = CMTimeMakeWithSeconds(180, 30)
output.maxRecordedDuration = maxDuration
captureSession.addOutput(output)
}
captureSession.commitConfiguration()
}
catch{
print("Error")
}
}
}我已经尝试过here的解决方案,但是它所做的只是把我已经在用相机工作的东西搞砸了。如有任何指导,将不胜感激!
发布于 2017-01-12 19:16:06
简单的步骤,以实现您想要的:
发布于 2020-08-19 05:42:36
添加音频输入后,如果您仍然面临一些录音持续时间后丢失的音频问题。用这个代码。对我起作用了。
videoOutput?.movieFragmentInterval = .invalidhttps://stackoverflow.com/questions/41618162
复制相似问题