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?
Любые идеи приветствуются.
Спасибо