我目前正在使用 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中的函数使用AudioFileOpenURL
和AudioFileReadBytes
. 有没有办法让框架为我使用ExtAudioFileOpenURL
和解码音频ExtAudioFileRead
?
我在这里尝试过代码: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,而且我还没有真正修改它,所以这就是我需要建立的。
我已经开始赏金,因为我真的需要这个,希望有人能指出我正确的方向。