如何将压缩的声音文件转换为未压缩的文件

时间:2011-04-13 11:14:38

标签: iphone objective-c audio core-audio

我想在我的iPhone / ipad应用程序中解压缩压缩的声音文件。 在我的应用程序中,我有.m4a文件,我想转换为.wav格式。 这怎么可能通过代码?

1 个答案:

答案 0 :(得分: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

上有更广泛的示例代码