Как воспроизвести звук из буфера в Android

Я пытаюсь воспроизвести звук из буфера, который передается с Android на Android. Пробовал использовать AudioTrack, который работает только для формата PCM. Для воспроизведения MP3 я хочу использовать MediaPlayer, но он не поддерживает воспроизведение из буфера. Как заставить его работать?


person Arunraj Shanmugam    schedule 12.05.2015    source источник


Ответы (1)


Что ж, у вас есть несколько вариантов... 1) (Вероятно, плохой вариант) Вы действительно можете заставить работать то, о чем просите, используя локальный прокси-сервер для подачи MediaPlayer данных MP3. Это не очень просто, но я уверен, что это может сработать. 2) Декодируйте данные MP3 и используйте AudioTrack. Это более легкий вариант, если вы хотите использовать стороннюю библиотеку для декодирования. См. эту ссылку. . Вероятно, есть и другие библиотеки, которые можно использовать для декодирования.

ОБНОВЛЕНИЕ: К сожалению, ссылка, которую я предоставил, теперь не работает. Приношу свои извинения за то, что не предоставил больше информации в ответе. Как говорится в комментарии OP, декодируйте с помощью MediaCodec и воспроизводите используя AudioTrack.

person Dave    schedule 12.05.2015
comment
Спасибо, Дэйв. У меня есть сомнения, можно ли декодировать буфер и воспроизвести его с помощью аудиодорожки? потому что я не собираюсь использовать какой-либо файл для сохранения данных, которые я получаю. мой текущий сценарий, например, while(1) { receive_audio_data(buf); /* получаем аудиоданные размером 4 КБ*/ decode_received_data(buf); /* декодирование аудиоданных 4kb mp3 */ audioTrack.write(buf, 0, 4096); } это будет работать? - person Arunraj Shanmugam; 13.05.2015
comment
Вам не нужно помещать его в файл. Он должен работать, сохраняя данные в памяти. - person Dave; 14.05.2015
comment
Декодировал MP3 с помощью MediaoCodec и воспроизводил его с помощью AudioTrack. - person Arunraj Shanmugam; 22.06.2017