Где находится буфер аудиоплееров в opensl при потоковой передаче звука с uri?

Я пытаюсь передать аудиофайл из uri с помощью opensl. Я хочу воспроизвести его немедленно, но также иметь доступ к потоковым данным после того, как проигрыватель закончит воспроизведение файла.

Я знаю, что данные находятся где-то в памяти, потому что я могу использовать поиск во время воспроизведения потокового аудио. Кроме того, когда проигрыватель заканчивает воспроизведение потокового аудиофайла, я останавливаю проигрыватель, который устанавливает позицию проигрывателя обратно в «0», где я могу снова начать воспроизведение звука.

Мне нужен доступ к этим данным, но где они? я могу получить указатель на него как-то?


person iedoc    schedule 18.01.2013    source источник


Ответы (1)


Если вы транслируете контент по сети, я не уверен, что то, что вы пытаетесь сделать, возможно.

Однако, начиная с Android API 14, можно использовать устройство аудиоплеера для декодирования содержимого в источник данных буферной очереди в формате PCM.

Дополнительные сведения об этом см. в документации NDK /docs/opensles/index.html.


Декодировать аудио в PCM Примечание: эта функция доступна на уровне API 14 и выше. Стандартный аудиоплеер воспроизводит аудиоустройство, а приемник данных указан как выходной микс. Однако, как расширение Android, аудиоплеер вместо этого действует как декодер, если источник данных указан как URI или локатор данных дескриптора файла Android с форматом данных MIME, а приемник данных представляет собой простой локатор данных буферной очереди Android с данными PCM. формат.

person rmigneco    schedule 22.08.2013