Лучше поздно, чем никогда;)
Я нашел ответ здесь Использовать cocos2d для воспроизведения файла ogg в моем проекте? .
PASoundMgr - это другой звуковой движок с поддержкой ogg-файла.
воспроизведение. Тем не менее, он не был обновлен с iOS 2.x и есть
многочисленные проблемы, которые возникли с тех пор, что это не
ручка.
Зачем вам играть ogg файлы? Если вы конвертируете их в aac, вы
быть в состоянии воспроизвести их, используя аппаратное декодирование, которое намного
эффективный с точки зрения использования процессора.
Они упомянули PASoundMgr. Это сработало для меня. Я только что скопировал из каркаса cocos2d все файлы-> библиотеки, на которых был основан SoundEngineTest . И избавился от ненужного кода.
Вот мой демонстрационный проект , который показывает, как играть в ogg на ios.
Будьте осторожны с симуляторами iOS 5. *, у них есть проблемы с библиотекой звука. Моя демоверсия работает на симуляторе 4.3 и на устройстве.
Вот шаги, которые я сделал для создания демонстрации:
Для начала вам понадобится каркас cocos2d-iphone. У меня уже было это, но вы можете найти его здесь cocos-2d_download .
Как вы можете заметить SoundEngineTest зависит от libvorbis.a. Это библиотека, созданная из файлов группы external/Tremor
. Также это зависит от фреймворков OpenAl, AudioToolbox.
Я скопировал все файлы из группы tremor в мой проект. Создана "vorbis" Статическая библиотека Cocoa Touch , без ARC. И добавил все исходные файлы и заголовок к цели "vorbis" на вкладке Фазы сборки .
В этапах сборки OggPlayDemo Добавлены библиотеки (libvorbis, OpenAl, AudioToolbox) в поле Link Binary with Libraries .
Добавлены PA классы в проект. И проверил OggPlayDemo в качестве цели. Чтобы избежать проблем с ARC, я отключил компиляцию ARC для этих файлов 3 PA . (см. отключить 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];
}