OGG Vorbis в iPhone SDK

Я хочу знать, возможно ли воспроизвести аудиофайл Ogg Vorbis с помощью iPhone SDK или существует библиотека или инфраструктура, которая позволяет это.

Я читал кое-что об OpenAL, но я не нахожу учебник... Кто-нибудь может мне помочь??

2 ответа

Решение

Лучше поздно, чем никогда;)
Я нашел ответ здесь Использовать cocos2d для воспроизведения файла ogg в моем проекте?,

PASoundMgr - это другой звуковой движок, поддерживающий воспроизведение файла ogg. Тем не менее, он не обновлялся с iOS 2.x, и с тех пор возникли многочисленные проблемы, которые он не решает.

Зачем вам проигрывать файлы ogg? Если вы преобразуете их в aac, вы сможете воспроизводить их, используя аппаратное декодирование, которое намного более эффективно с точки зрения использования процессора.

Они упомянули PASoundMgr. Это сработало для меня. Я просто скопировал из каркаса cocos2d все файлы-> библиотеки, на которых основан SoundEngineTest. И избавился от ненужного кода.

Вот мой демонстрационный проект, который показывает, как играть в ogg на ios.

Будьте осторожны с симуляторами iOS 5.*, у них есть некоторые проблемы со звуковой библиотекой. Моя демоверсия работает на симуляторе 4.3 и на устройстве.


Вот шаги, которые я сделал для создания демо:

  1. Для начала вам понадобится каркас cocos2d-iphone. У меня уже было это, но вы можете найти его здесь cocos-2d_download.

  2. Как вы можете заметить, SoundEngineTest зависит от libvorbis.a. Это библиотека, которая сделана из файлов из external/Tremor группа. Также это зависит от фреймворков OpenAl, AudioToolbox.

  3. Я скопировал все файлы из группы Tremor в мой проект. Создана "vorbis" Какао Touch Статическая библиотека, без ARC. И добавил все исходные файлы и заголовок к цели "vorbis" на вкладке " Фазы сборки ".

  4. На этапах сборки OggPlayDemo Добавлены библиотеки (libvorbis, OpenAl, AudioToolbox) в поле " Связать двоичные файлы с библиотеками".

  5. Добавлены классы PA в проект. И проверил OggPlayDemo в качестве цели. Чтобы избежать проблем с ARC, я отключил компиляцию ARC для этих 3 файлов PA. (см. отключение 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];   
    }
    

Cricket Audio, в частности, будет воспроизводить ogg-файлы и работает на iOS/Android/WP8.

Другие вопросы по тегам