Есть ли «простой» способ воспроизведения линейного звука PCM на iPhone? - PullRequest
1 голос
/ 07 февраля 2010

Я делаю приложение для воспроизведения мультимедиа, которое получает несжатый линейный звук PCM (über raw) от стороннего декодера, но я схожу с ума, когда речь идет просто о воспроизведении самого простого аудио формата, который я могу себе представить ..

Конечное приложение будет постепенно получать данные PCM в виде потоков исходных файлов с сервера, поэтому я сначала посмотрел на Аудио-очереди (так как, казалось бы, могу просто отдавать их байты на ходу), но это оказалось обманом - тем более, что пример кода Apple Audio Queue, похоже, сработал в магическом отключении OpenGL и ненужной инкапсуляции ..

В итоге я использовал AVAudioPlayer во время (не потокового) прототипирования; В настоящее время я создаю заголовок WAVE и добавляю его в начало данных PCM, чтобы AVAudioPlayer принял его (поскольку он не может принимать необработанный PCM)

Очевидно, что для потоковой передачи это бесполезно (WAVE устанавливает всю длину файла в заголовке, поэтому данные нельзя добавлять на ходу) ..

.. по сути: есть ли способ дать iPhone OS несколько байтов PCM и заставить их воспроизводить их?

1 Ответ

1 голос
/ 07 февраля 2010

Вам следует вернуться к AudioQueue коду. После того, как вы удалите всю болтовню, у вас должно быть около 2 страниц кода плюс обратный вызов, в котором вы можете предоставить необработанный PCM. Этот обратный вызов также синхронизирован с вашим основным циклом, поэтому вам даже не нужно беспокоиться о блокировке.

...