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

Posted

技术标签:

【中文标题】如何将压缩的声音文件转换为未压缩的文件【英文标题】:How to convert a compressed sound file to uncompressed file 【发布时间】:2011-04-13 11:14:38 【问题描述】:

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

【问题讨论】:

你的意思是转换格式吗?压缩后,您将无法提高采样声音的质量/分辨率。 对,其实我想知道压缩文件的波形 【参考方案1】:

您可以使用 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 上有更广泛的示例代码

【讨论】:

当我在上面尝试你的确切代码时(在修复格式标志中的口吃之后)我得到一个“fmt?”错误。知道问题可能是什么吗?

以上是关于如何将压缩的声音文件转换为未压缩的文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将wav格式声音文件转换为文本文件

使用 cws2fws 转换压缩 swf 的问题

如何将文件压缩到最小容量?

Unity3.5 导入音频文件

如何从 gzip 压缩文件转换为 Zstandard

在使用Eclipse导出时,Tomcat 7.0.52服务器不会将webapps中的war文件(压缩文件)解压缩为未压缩格式