2011-04-13 2 views
0

Я хочу распаковать сжатый звуковой файл в моем приложении iPhone/ipad. В моем приложении у меня есть файлы .m4a, которые я хотел бы преобразовать в .wav-форму. Как это возможно с помощью кода?Как преобразовать сжатый звуковой файл в несжатый файл

+0

ли вы имеете в виду преобразовать _format_? Когда-то что-то сжато, вы не можете увеличить качество/разрешение сэмплированного звука. – Widor

+0

Да, на самом деле я хочу знать форму волны сжатого файла – iPhoneDev

ответ

0

Вы можете использовать ExtAudioFile сделать это:

CFURLRef url = /* ... */; 
ExtAudioFileRef eaf; 
OSStatus err = ExtAudioFileOpenURL((CFURLRef)url, &eaf); 
if(noErr != err) 
    /* handle error */ 

AudioStreamBasicDescription format; 
format.mSampleRate = 44100; 
format.mFormatID = kAudioFormatLinearPCM; 
format.mFormatFlags = kAudioFormatFormatFlagIsPacked; 
format.mBitsPerChannel = 16; 
format.mChannelsPerFrame = 2; 
format.mBytesPerFrame = format.mChannelsPerFrame * 2; 
format.mFramesPerPacket = 1; 
format.mBytesPerPacket = format.mFramesPerPacket * format.mBytesPerFrame; 

err = ExtAudioFileSetProperty(eaf, kExtAudioFileProperty_ClientDataFormat, sizeof(format), &format); 

/* Read the file contents */ 

Очевидно, я просто произвольно выбрал 16-битное целое стереозвука в формате для извлечения, но, надеюсь, идея ясна. Вы просто скажите ExtAudioFile, в каком формате вы хотели бы включить свои аудиоданные, и автоматически преобразуете его из формата файла в запрошенный (клиентский) формат.

компании Apple имеет более обширный пример кода на http://developer.apple.com/library/mac/#samplecode/ConvertFile/Introduction/Intro.html

+0

Когда я пытаюсь выполнить ваш точный код выше (после фиксации заикания в флагах формата), я получаю сообщение «fmt?». ошибка. Любая идея, что может быть проблемой? –

Смежные вопросы