iphone - AudioToolbox/OpenAL ExtAudioFile 播放压缩音频

标签 iphone ios audio openal audiotoolbox

我目前正在使用 OpenAL 播放游戏音乐。它工作正常,除了它不适用于原始 WAV 文件之外的任何东西。这意味着我最终得到了大约 9mb 的配乐。

我是 OpenAL 的新手,我直接使用来自 Apple 示例 ( https://developer.apple.com/library/ios/#samplecode/MusicCube/Listings/Classes_MyOpenALSupport_h.html%23//apple_ref/doc/uid/DTS40008978-Classes_MyOpenALSupport_h-DontLinkElementID_9 ) 的代码来获取缓冲区数据。

问题:有没有办法修改这个函数,让它读取压缩音频并即时解码?
我不太担心音频文件格式,只要它可以播放和压缩(如 mp3、aac、caf)即可。我想这样做(显然)的唯一原因是减小文件大小。

编辑: 看来问题不在于 OpenAL,而在于我用来获取缓冲区的方法。 https://developer.apple.com/library/ios/#samplecode/MusicCube/Listings/Classes_MyOpenALSupport_h.html%23//apple_ref/doc/uid/DTS40008978-Classes_MyOpenALSupport_h-DontLinkElementID_9 处的函数使用 AudioFileOpenURLAudioFileReadBytes。有什么方法可以让框架使用 ExtAudioFileOpenURLExtAudioFileRead 为我解码音频?

我在这里试过代码:https://devforums.apple.com/message/10678#10678 ,但我不知道该怎么做。我用来获取缓冲区的函数位于 https://developer.apple.com/library/ios/#samplecode/MusicCube/Listings/Classes_MyOpenALSupport_h.html%23//apple_ref/doc/uid/DTS40008978-Classes_MyOpenALSupport_h-DontLinkElementID_9 ,我还没有真正修改它,所以这就是我需要构建的。

我已经开始悬赏,因为我真的需要这个,希望有人能给我指明正确的方向。

最佳答案

您需要使用音频服务来加载其他格式。请记住,OpenAL 仅支持未压缩的 PCM 数据,因此您加载的任何数据都需要在加载期间解压缩。

这里有一些代码可以加载 iOS 支持的任何格式:https://github.com/kstenerud/ObjectAL-for-iPhone/blob/master/ObjectAL/ObjectAL/Support/OALAudioFile.m

如果你想流式传输压缩音轨类型的音频,请使用 AVAudioPlayer,因为它直接从磁盘播放压缩音频。

关于iphone - AudioToolbox/OpenAL ExtAudioFile 播放压缩音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6673051/

相关文章:

android - 音频焦点更改不起作用

iphone - 是否可以删除 Core-plot 矩形框?

iphone - [UILabel setImage :]: unrecognized selector sent to instance

ios - Swift:放置在 tableviewcell 中的图像不可见

iphone - 如何在AVAudioplayer中播放多个文件

html - 将 MP3 音频文件嵌入(静态)HTML 文件的简单方法,开始在特定位置播放?

iphone - iPhone 上的 XML 有哪些选项?

iphone - 如何从服务器导入图像并将其排列在 View 中

iOS 核心数据 - NSFetchRequest 和 NSPredicate 不允许双重格式?

ios - 在 xcode 中找不到 SenTestKit 错误