¿La grabación de video no tiene audio?

He realizado un exitoso progtwig de grabación de video, pero no tiene audio? ¿Qué debo hacer para arreglar esto? Tengo los permissions de audio configurados correctamente en mi info.plist . Estoy usando el 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") } } } 

He intentado encontrar la solución aquí, pero lo único que hizo fue arruinar lo que ya tenía trabajando con la camera. ¡Se agradece cualquier orientación!

Pasos sencillos para implementar como desee:

  1. Obtenga su dispositivo de captura para video (AVMediaTypeVideo)
  2. Obtenga su dispositivo de captura para audio (AVMediaTypeAudio)
  3. Cree su input de video (AVCaptureDeviceInput con dispositivo de video)
  4. Cree su input de audio (AVCaptureDeviceInput con dispositivo de audio)
  5. Configure su session de captura (AVCaptureSession) a través de beginConfiguration ()
  6. Agregar inputs para capturar la session a través de addInput ()
  7. Confirmar configuration mediante commitConfiguration ()