我正在尝试使用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!");
我没有得到它的解决方案。我尝试过将属性设置为输出文件。但是我遇到了同样的问题。
请帮我解决。
答案 0 :(得分:3)
我也遇到了这个 - 它没有很好的记录,但原因可能是你必须将音频类别设置为与硬件编码兼容的音频类别。
特别是,任何与设备上的其他声音混合的音频会话都将阻止编码器工作。
我知道AVAudioSessionCategoryPlayAndRecord,AVAudioSessionCategorySoloAmbient和AVAudioSessionCategoryAudioProcessing肯定会工作(只要你没有覆盖kAudioSessionProperty_OverrideCategoryMixWithOthers属性)。
我实际上已经将将任何音频文件编码到AAC所需的所有内容组装成异步类:TPAACAudioConverter