2011-01-12 3 views
1

AudioUnit을 사용하여 caf 파일을 m4a 파일로 변환하려고합니다. 변환 할 코드를 구현했습니다. 응용 프로그램을 실행하려고하면 다음 오류 메시지가 나타납니다.코덱에 액세스 할 수 없습니다. (-66672)

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

어느 하나를 해결하는 데 도움이 바랍니다. – jfalexvijay

답변

3

이 문제가 발생했습니다. 문서화가 잘되어 있지 않지만, 오디오 범주를 하드웨어 인코딩과 호환되는 것으로 설정해야 할 수도 있습니다.

특히 장치에서 다른 사운드와 믹싱을 제공하는 오디오 세션은 인코더가 작동하지 않도록합니다.

AVAudioSessionCategoryPlayAndRecord, AVAudioSessionCategorySoloAmbient 및 AVAudioSessionCategoryAudioProcessing이 확실히 작동한다는 것을 알고 있습니다 (kAudioSessionProperty_OverrideCategoryMixWithOthers 속성을 재정의하지 않는 한).

실제로 비동기 클래스로 AAC에 오디오 파일을 인코딩하는 데 필요한 모든 조립했습니다 TPAACAudioConverter

관련 문제