音频`AVAssetWriterInput` & `AVAudioRecorder`优化设置

问题描述

我目前正在构建一个带有视频和音频记录(前景和背景)的应用。

我的客户报告说有些录音失败,现在我检查了他们的日志,似乎在某些设备上编码设置不好。 我在整个网络上进行了搜索,以找到有关如何配置录制对象 AVAssetWriterInputAVAudioRecorder 的不错的信息来源。目前这是我对两个对象的设置

        let recorderSettings: [String: Any] = [
            AVFormatIDKey: kAudioFormatMPEG4AAC,AVNumberOfChannelsKey: 2,AVSampleRateKey: 44100,AVEncoderBitRateKey: 64000,AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
        ]

任何帮助将不胜感激,谢谢

顺便说一句,这是我得到的错误

"AssetWrtiting finished with 
Optional(Error Domain=AVFoundationErrorDomain Code=-11861
"Cannot Encode Media" 
UserInfo={NSLocalizedFailureReason=The encoding parameters are not supported.
NSLocalizedDescription=Cannot Encode Media,NSUnderlyingError=0x2839b7750 {Error Domain=NSOsstatusErrorDomain Code=-12651 "(null)"}})

解决方法

仅供参考,如果您遇到这个问题。

AVCaptureSession AVCaptureVideoDataOutput & AVCaptureAudioDataOutput 的输出有一个方法来获取推荐的录音设置

func recommendedAudioSettingsForAssetWriter(writingTo outputFileType: AVFileType) -> [AnyHashable : Any]?