一种在小文件大小的iphone游戏中进行音乐的方法

时间:2010-02-02 04:39:16

标签: iphone openal

我正在制作iphone游戏,目前正在使用OpenAL for SFX,我们希望将游戏保持在10 meg以下。

iphone(通过openAL atleast)只能原生播放未压缩的PCM。

将音乐从某种良好的压缩格式(mp3,aac,ogg等)中提取到我的游戏中最简单的方法是什么?

是否有某种解码器api?我应该使用openAL吗?

编辑:

好的,我们已经完成了一些计算,我们应该能够通过简单的64kb / s压缩方案很好地适应所有内容,所以我正在寻找解码压缩文件的最简单方法(最好是从内存中解码)在内存中的原始pcm用于open al。我们还需要一个流解码器,它没有必要能够从内存中解码流,但它会很好。我们希望将循环放入轨道中,因此如果解码器具有“随机访问”以便您可以轻松地在轨道上移动,那将是理想的。

3 个答案:

答案 0 :(得分:2)

压缩程度最高的方式是trackerMIDI。这使您只能存储音乐的分数,而不是声音样本。

也许this正是您所寻找的。

答案 1 :(得分:2)

另一种选择是在游戏中编译open source synth /采样器,并将MIDI播放器与合成器样本/声音进行通信,这可以为您提供非常好的音乐(我是一名软件工程专业的学生并且几乎学习过音乐(15年的钢琴/合成音乐等),可能会有点复杂,但是,可以通过轻音乐MIDI轨道合成器播放出令人敬畏的声音来触发合成音。

祝你好运,我认为这实际上是一个非常好的(可能有点复杂),方式去!

答案 2 :(得分:0)

好的,我刚刚完成了所有设置。

我使用音频队列音频流只是因为它是iPhone SDK的一部分,有很好的记录:

http://developer.apple.com/iphone/library/documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AboutAudioQueues/AboutAudioQueues.html#//apple_ref/doc/uid/TP40005343-CH5-SW1

一般解释和

http://developer.apple.com/iphone/library/documentation/MusicAudio/Conceptual/AudioQueueProgrammingGuide/AQPlayback/PlayingAudio.html#//apple_ref/doc/uid/TP40005343-CH3-SW1

一个很好的例子(有点儿马车)

这似乎与openAL一起工作正常。并且看起来它似乎允许我们以精确的样本水平随机跳过流。

唯一剩下要做的就是得到它,以便我们可以从内存加载,这可以通过替换:

来完成

AudioFileOpenURL

拨打电话致电:

AudioFileOpenWithCallbacks

不幸的是,音频文件服务的文档......很差......至少可以说。

阅读它需要您自担风险,然后在莫名其妙地无法解读之后阅读: http://developer.apple.com/iphone/library/qa/qa2009/qa1676.html

它告诉你回调实际上是可选的,并且通过提供一个写入,你告诉它打开文件进行写入,它不能为MP4做,所以只需为write和setSize回调传递NULL。

我还想说,如果你真的想要最小的尺寸,推荐MIDI的两个答案几乎肯定是正确的方法。

不幸的是,我们很懒,只是想快速得到一些东西,它也发现我们可以适应适度压缩的音频。我也有点担心性能影响(我不知道midi会是什么)但显然这种压缩音频的方法使用硬件解码。

如果你想要传统的压缩音频路径,希望这会有所帮助,你也可以试试音频转换器服务,如果你想使用openal的数据,不幸的是这个API也属于令人尴尬的文档参考手册。我甚至不知道它是否有效,如果确实如此,我不确定它是否使用硬件解码器。