我想知道是否可以使用 iPhone SDK 播放 Ogg Vorbis 音频文件,或者是否存在允许这样做的库或框架。
我读过一些关于 OpenAL 的东西,但我没有找到任何教程......谁能帮助我?
迟到总比没有好;)
我在这里找到了答案Use cocos2d for play ogg file in my project? .
PASoundMgr 是一个不同的声音引擎,它支持 ogg 文件播放。但是,它自 iOS 2.x 以来一直没有更新,并且从那时起出现了许多它无法处理的问题。
为什么需要播放ogg文件?如果您将它们转换为 aac,您将能够使用硬件解码来播放它们,从 cpu 使用的角度来看,这更有效。
他们提到了 PASoundMgr。它对我有用。我刚刚从 cocos2d 框架中复制了SoundEngineTest所基于的所有文件->库。并摆脱了不必要的代码。
小心 iOS 5.* 模拟器,它们的声音库有一些问题。我的演示适用于 4.3 模拟器和设备。
以下是我创建演示的步骤:
首先你需要 cocos2d-iphone 框架。我已经有了,但你可以在这里cocos-2d_download找到它。
如您所见,SoundEngineTest依赖于 libvorbis.a 。这是一个由组中的文件组成的库external/Tremor
。它还依赖于 OpenAl、AudioToolbox 框架。
我将所有文件从震颤组复制到我的项目中。创建了“vorbis” Cocoa Touch 静态库,没有 ARC。并将所有源文件和头文件添加到Build Phases选项卡中的“vorbis”目标中。
在 OggPlayDemo 的构建阶段将库(libvorbis、OpenAl、AudioToolbox)添加到Link Binary with Libraries框中。
向项目添加了PA类。并检查了 OggPlayDemo 作为目标。为了避免 ARC 出现问题,我禁用了这 3 个PA文件的 ARC 编译。(请参阅为单个文件禁用 ARC)
删除了所有 cocos2d 引用。有一些与根据方向校正听众位置相关的代码......我评论了它。我不需要这个功能来播放音频。
复制的音频文件。
最后将这段代码添加到 ViewController:
- (void)viewDidLoad
{
[super viewDidLoad];
//init
[PASoundMgr sharedSoundManager];
[[[PASoundMgr sharedSoundManager] listener] setPosition:CGPointMake(0, 0)];
self.audioSource = [[PASoundMgr sharedSoundManager] addSound:@"trance-loop" withExtension:@"ogg" position:CGPointMake(0, 0) looped:YES];
// lower music track volume and play it
[self.audioSource setGain:0.5f];
}
- (IBAction)play:(id)sender {
[self.audioSource playAtListenerPosition];
}
Cricket Audio将播放 ogg 文件等,适用于 iOS/Android/WP8。