Как преобразовать сжатый звуковой файл в несжатый файл - PullRequest
0 голосов
/ 13 апреля 2011

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

1 Ответ

0 голосов
/ 13 апреля 2011

Вы можете использовать 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

...