使用 OpenAL 将音频转换为 CAF 格式以便在 iPhone 上播放

Posted

技术标签:

【中文标题】使用 OpenAL 将音频转换为 CAF 格式以便在 iPhone 上播放【英文标题】:Converting audio to CAF format for playback on iPhone using OpenAL 【发布时间】:2010-09-20 05:23:36 【问题描述】:

我在 CrashLanding 示例中使用来自 Apple 的 SoundEngine 示例代码来播放多个音频文件。使用 CrashLanding 中包含的示例 caf 文件一切正常,但是当我尝试使用我自己的示例转换为 CAF 使用 afconvert 时,我得到的只是石质的沉默;)

是否有人设置了 afconvert 以生成能够通过 OpenAL 播放的 CAF 文件?

【问题讨论】:

我想我会把你推到“999”的边缘,戴夫! 【参考方案1】:
afconvert -f caff -d LEI16@44100 -c 1 in.wav out.caf

参考资料:

苹果的Multimedia Programming Guide: Using Audio: Preferred Audio Formats in ios afconvert(1) man page(使用 afconvert -h 获取完整信息)

【讨论】:

请问您是如何或在哪里找到答案的? @KristopherJohnson 两个链接都断开了。 错误无法打开输入文件(-43)我该怎么办? 你需要在终端运行上面的代码。 in.wav 是声音的位置(只需拖放声音文件),out.caf 是带有.caf 扩展名的声音的输出路径 很好,但这将通道从 2 减少到 1,本质上:这是从立体声到单声道的转换!如果这不是您想要的,只需从命令中删除“-c 1”即可。【参考方案2】:

简单的 bash 脚本将文件夹中的 mp3 文件转换为 iphone 的 caf

#!/bin/bash
for f in *.mp3; do
  echo "Processing $f file..."
  afconvert -f caff -d LEI16@44100 -c 1 "$f" "$f/mp3/caf"
done

【讨论】:

为了让脚本更兼容不同的文件类型,我将 afconvert 行修改为:afconvert -f caff -d LEI16 "$f" "$f/mp3/caf" 否则我会得到错误 你能告诉我在哪里存储这个字符串吗?我对 bash 脚本一无所知。我必须以哪种格式存储它? Mac 或 windows 可以吗? @Devang 在 Mac 中很容易完成,只需打开 TextEdit,将文本保存到文件,然后打开终端,导航到保存的文件,输入:chmod +x 即可可执行文件,直接使用。如果你在 Windows 上使用 Cygwin 之类的东西,你可以做同样的事情。【参考方案3】:

这是最好的尺寸:

afconvert -f caff -d ima4 original.wav

【讨论】:

【参考方案4】:

感谢您的信息。

另外,如果您正在研究使用 openAL 进行额外压缩,这可能会引起您的兴趣:

“iPhone、OpenAL 和 IMA4/ADPCM” http://www.wooji-juice.com/blog/iphone-openal-ima4-adpcm.html

【讨论】:

此方法是否与添加到 UILocalNotification 兼容?它比第一种方法压缩得多。【参考方案5】:

今天 -c 似乎不起作用,我通过以下方式得到它:

afconvert -f caff -d LEI16 input.m4a output.caf

【讨论】:

以上是关于使用 OpenAL 将音频转换为 CAF 格式以便在 iPhone 上播放的主要内容,如果未能解决你的问题,请参考以下文章

Core Audio / OpenAL 会重新采样音频文件吗?

从缓冲区数据中创建一个 .caf 文件

CoreAudio/OpenAL:如何获取传出的音频信号

减小转换后的音频文件的大小

将声音转换为CoreAudio格式[CAF][iPhone]

通过 openAL 将录制的音频保存为 .wav