я могу получить необработанные данные cpm из MediaPlayer или SoundPool? - PullRequest
3 голосов
/ 19 марта 2012

я использую eclipse with android sdk 4.0.3 api lvl 15 для создания основного музыкального проигрывателя.

Я прочитал и обнаружил, что есть два основных класса для воспроизведения звуков. MediaPlayer и SoundPool. SoundPool обладает большей гибкостью в отношении приоритета звука и скорости воспроизводимого звука.

Я также хотел бы нарисовать график визуализации звука.

есть ли способ получить необработанные данные PCM из загруженного аудиоустройства, чтобы я мог рисовать график?

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

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

любая информация по этому вопросу будет принята с благодарностью.

спасибо!

Kfir

Ответы [ 3 ]

3 голосов
/ 02 апреля 2012

Эй, посмотрите на AudioTrack для чтения в байтах. Вы можете манипулировать массивом байтов звука, прежде чем воспроизводить его. http://developer.android.com/reference/android/media/AudioTrack.html

Audiotrack определенно более прост в управлении, поскольку вы получаете доступ к необработанным данным, но вы должны выполнять работу самостоятельно, а не просто загружать класс (MediaPlayer) с файлом актива.

Также посмотрите на этот пример для чтения ресурсов в байтовый массив http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/content/ReadAsset.html

Я не уверен, что вы можете использовать байтовые массивы для рисования графика?

Надеюсь, это поможет вам ;-) Аудиопарт Android действительно не так хорошо задокументирован, я боюсь, и не было с самого первого дня; \

3 голосов
/ 02 апреля 2012

Я прошел через один проект с открытым исходным кодом.

, поскольку они загрузили PCM аудиофайла.

здесь есть ссылка

надеюсь, это поможет вам извлечь PCM из аудио файла.

1 голос
/ 27 марта 2012

У меня сильное чувство, что вам не повезло получить PCM от этих классов Android.Они, конечно, слишком сильно привязаны к нативному уровню (из-за производительности), и реализация отличается на разных версиях API или устройствах.Если вы еще не нашли API-интерфейс, связанный с PCM, то его может и не быть.

Решение состоит в том, чтобы самостоятельно создать звуковой микшер, будь то в Java или C / C ++, тогда у вас будут данные PCM.,Я ожидаю, что будет довольно медленно получать данные PCM на Java, обрабатывать их там, отправлять обратно на воспроизведение аудио.Возможно, вам придется перейти к программированию на NDK.

...