5

我想知道是否可以使用 iPhone SDK 播放 Ogg Vorbis 音频文件,或者是否存在允许这样做的库或框架。

我读过一些关于 OpenAL 的东西,但我没有找到任何教程......谁能帮助我?

4

2 回答 2

10

迟到总比没有好;)
我在这里找到了答案Use cocos2d for play ogg file in my project? .

PASoundMgr 是一个不同的声音引擎,它支持 ogg 文件播放。但是,它自 iOS 2.x 以来一直没有更新,并且从那时起出现了许多它无法处理的问题。

为什么需要播放ogg文件?如果您将它们转换为 aac,您将能够使用硬件解码来播放它们,从 cpu 使用的角度来看,这更有效。

他们提到了 PASoundMgr。它对我有用。我刚刚从 cocos2d 框架中复制了SoundEngineTest所基于的所有文件->库。并摆脱了不必要的代码。

这是我的演示项目,展示了如何在 ios 上播放 ogg。

小心 iOS 5.* 模拟器,它们的声音库有一些问题。我的演示适用于 4.3 模拟器和设备。


以下是我创建演示的步骤:

  1. 首先你需要 cocos2d-iphone 框架。我已经有了,但你可以在这里cocos-2d_download找到它。

  2. 如您所见,SoundEngineTest依赖于 libvorbis.a 这是一个由组中的文件组成的库external/Tremor。它还依赖于 OpenAl、AudioToolbox 框架。

  3. 我将所有文件从震颤组复制到我的项目中。创建了“vorbis” Cocoa Touch 静态库,没有 ARC。并将所有源文件和头文件添加到Build Phases选项卡中的“vorbis”目标中。

  4. 在 OggPlayDemo 的构建阶段将库(libvorbis、OpenAl、AudioToolbox)添加到Link Binary with Libraries框中。

  5. 向项目添加了PA类。并检查了 OggPlayDemo 作为目标。为了避免 ARC 出现问题,我禁用了这 3 个PA文件的 ARC 编译。(请参阅为单个文件禁用 ARC

  6. 删除了所有 cocos2d 引用。有一些与根据方向校正听众位置相关的代码......我评论了它。我不需要这个功能来播放音频。

  7. 复制的音频文件。

  8. 最后将这段代码添加到 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];   
    }
    
于 2012-04-16T15:17:40.960 回答
0

Cricket Audio将播放 ogg 文件等,适用于 iOS/Android/WP8。

于 2014-01-30T17:43:55.387 回答