1

AudioUnitを使用してcafファイルをm4aファイルに変換しようとしています。変換するコードを実装しました。アプリケーションを実行しようとすると、次のエラーメッセージが表示されます。

宛先クライアント形式を設定できませんでした(-66672)

次のリンクからサンプルコードを入手しました。
http://developer.apple.com/library/ios/#samplecode/iPhoneExtAudioFileConvertTest/Introduction/Intro.html

コード:

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!");

私はそれに対する解決策を得ていません。プロパティを出力ファイルに設定するように試しました。しかし、私は同じ問題を抱えています。

それを解決するのを手伝ってください。

4

1 に答える 1

3

私もこれに遭遇しました-十分に文書化されていませんが、その理由はおそらく、オーディオカテゴリをハードウェアエンコーディングと互換性のあるものに設定する必要があるためです.

特に、デバイス上の他のサウンドとのミキシングを提供するオーディオ セッションは、エンコーダーの動作を停止します。

AVAudioSessionCategoryPlayAndRecord、AVAudioSessionCategorySoloAmbient、および AVAudioSessionCategoryAudioProcessing が確実に機能することはわかっています (kAudioSessionProperty_OverrideCategoryMixWithOthers プロパティをオーバーライドしない限り)。

オーディオ ファイルを AAC にエンコードするために必要なすべてを非同期クラスに実際にアセンブルしました: TPAACAudioConverter

于 2011-04-02T23:07:11.587 に答える