1

我们正在为 10.7.5 及更高版本开发录音应用程序。我们AVCaptureAudioDataOutput用来捕捉音频和数据是使用AVAssetWriterInput.

属性设置AVAssetWriterInput如下:

AVFormatIDKey : kAudioFormatMPEG4AAC
AVSampleRateKey : 此值取自使用以下代码的设备

 AudioStreamBasicDescription streanDesc;
 UInt32 propSize = sizeof(AudioStreamBasicDescription);
 AudioDeviceGetProperty(mInputDevice, 0, YES, kAudioDevicePropertyStreamFormat, &propSize,&streanDesc);

AVNumberOfChannelsKey :取自 AudioStreamBasicDescription。
AVEncoderBitRateKey :这是硬编码为 96000。

这适用于大多数音频设备,除了采样率为 32khz 的 USB 麦克风和采样率为 48khz 的 iSight 设备。当我们将这两个设备用作输入音频设备时,在写入音频数据时,我们收到以下错误 -

Error Domain=AVFoundationErrorDomain Code=-11821 "Cannot Decode" UserInfo=0x279470 {NSLocalizedFailureReason=The media data could not be decoded. It may be damaged., NSUnderlyingError=0x292370 "The operation couldn’t be completed. (OSStatus error 560226676.)", NSLocalizedDescription=Cannot Decode}".

但是,如果我们将 USB 麦克风硬编码AVSampleRateKey到 44100,它可以正常工作,但不适用于 iSight 设备。

提供什么正确的价值AVSampleRateKey?谁能帮我解决这个问题。

4

0 回答 0