无法访问编解码器。 (-66672)

时间:2011-01-12 04:29:09

标签: ios audiounit m4a caf

我正在尝试使用AudioUnit将caf文件转换为m4a文件。我已经实现了转换代码。当我尝试运行该应用程序时,我收到以下错误消息;

couldn't set destination client format (-66672)

我从以下链接获得了示例代码;
http://developer.apple.com/library/ios/#samplecode/iPhoneExtAudioFileConvertTest/Introduction/Intro.html

CODE:

size = sizeof(clientFormat);
XThrowIfError(ExtAudioFileSetProperty(sourceFile, kExtAudioFileProperty_ClientDataFormat, size, &clientFormat), "couldn't set source client format");
//UInt32 encoderSpecifier = kAudioFormatMPEG4AAC;
//XThrowIfError(AudioFormatGetPropertyInfo(kAudioFormatProperty_Encoders, sizeof(encoderSpecifier), &encoderSpecifier, &size), "AudioFormatGetPropertyInfo: couldn't get property info");
size = sizeof(clientFormat);
XThrowIfError(ExtAudioFileSetProperty(destinationFile, kExtAudioFileProperty_ClientDataFormat, size, &clientFormat), "couldn't set destination client format");
AudioConverterRef audioConverter;
size = sizeof(audioConverter);
XThrowIfError(ExtAudioFileGetProperty(destinationFile, kExtAudioFileProperty_AudioConverter, &size, &audioConverter), "Couldn't get Audio Converter!");

我没有得到它的解决方案。我尝试过将属性设置为输出文件。但是我遇到了同样的问题。

请帮我解决。

1 个答案:

答案 0 :(得分:3)

我也遇到了这个 - 它没有很好的记录,但原因可能是你必须将音频类别设置为与硬件编码兼容的音频类别。

特别是,任何与设备上的其他声音混合的音频会话都将阻止编码器工作。

我知道AVAudioSessionCategoryPlayAndRecord,AVAudioSessionCategorySoloAmbient和AVAudioSessionCategoryAudioProcessing肯定会工作(只要你没有覆盖kAudioSessionProperty_OverrideCategoryMixWithOthers属性)。

我实际上已经将将任何音频文件编码到AAC所需的所有内容组装成异步类:TPAACAudioConverter