我想知道是否可以使用iPhone SDK播放Ogg Vorbis音频文件,或者是否存在允许此操作的库或框架。
我读过一些关于OpenAL的内容,但我没有找到任何教程...... 任何人都可以帮助我吗?
答案 0 :(得分:9)
迟到总比没有好;)
我在这里找到了答案Use cocos2d for playing ogg file in my project?。
PASoundMgr是一个支持ogg文件的不同声音引擎 回放。但是,自iOS 2.x以来它还没有更新 从那时起出现的许多问题都没有 处理
为什么需要播放ogg文件?如果你将它们转换为aac,你会的 能够使用更多的硬件解码来播放它们 从cpu使用的角度来看效率很高。
他们提到了PASoundMgr。它对我有用。我刚从cocos2d框架复制了所有文件 - > SoundEngineTest 所基于的库。并且摆脱了不必要的代码。
小心iOS 5. *模拟器,他们有一些problems声音库。我的演示适用于4.3模拟器和设备。
以下是我创建演示的步骤:
首先你需要cocos2d-iphone框架。我已经有了它,但你可以在cocos-2d_download找到它。
您可以注意到 SoundEngineTest 取决于libvorbis.a。这是一个由external/Tremor
组的文件组成的库。它还取决于OpenAl,AudioToolbox框架。
我将 tremor 组中的所有文件复制到我的项目中。创建了“vorbis” Cocoa Touch静态库,没有ARC。并将所有源文件和标题添加到 Build Phases 标签中的“vorbis”目标。
在OggPlayDemo的 Build Phases 中添加了库(libvorbis,OpenAl,AudioToolbox)到 Link Binary with Libraries 框。
将 PA 类添加到项目中。并检查OggPlayDemo作为目标。为了避免ARC出现问题,我为这3个 PA 文件禁用了ARC编译。 (见disable ARC for single file)
删除了所有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];
}
答案 1 :(得分:0)
Cricket Audio将播放ogg文件等,并适用于iOS / Android / WP8。