https://github.com/google/ExoPlayer

ужно воспроизводить живой аудиопоток, на самом деле это радио. Проблема в том, что мне также нужно управлять 20-минутным буфером для потоковой передачи. Насколько я понимаю, это нелегко реализовать с помощью Android.

Сначала я проверил MediaPlayer, но он не предоставляет никаких методов для управления буфером. На самом деле вы даже не можете установить размер буфера напрямую.

Во-вторых, я пытался управлять буфером с помощью локальных файлов: постепенно загружать поток во временные файлы и переключать их. Но когда вы хотите переключиться на следующий файл (изменить источник данных в MediaPlayer), звук не воспроизводится непрерывно. Вы можете услышать короткие перерывы.

Последняя идея - использовать потоковый прокси. Обычно он используется для воспроизведения потоков в версиях Android ниже 8. В потоковом прокси вы создаете ServerSocket, читаете из аудиопотока и записываете в проигрыватель. Так что на самом деле я могу управлять буферизацией там. Я могу кэшировать поток и записывать в MediaPlayer все, что захочу. Но. Это не работает с Android 8.

Я получил исключение: Сброс соединения по пиру java.net.SocketException: Сброс соединения по пиру. MediaPlayer 8 не хочет читать данные из сокета.

При этом у меня два вопроса: 1) Какой еще способ реализовать потоковую буферизацию? 2) как адаптировать StreamProxy для android 8?

Любые идеи приветствуются.

Спасибо

Ответы на вопрос(0)

Ваш ответ на вопрос