Мне нужно играть в прямом эфире, на самом деле это радио. Проблема в том, что мне также нужно управлять 20-минутным буфером для потоковой передачи. Насколько я понимаю, это непросто реализовать с помощью android.
Сначала я проверил MediaPlayer, но он не предоставляет никаких методов управления буфером. Фактически вы даже не можете установить размер буфера напрямую.
Во-вторых, я пытался управлять буфером с использованием локальных файлов: постепенно загружать поток во временные файлы и переключаться между ними. Но когда вы хотите переключиться на следующий файл (изменить источник данных в MediaPlayer), звук не воспроизводится непрерывно. Вы можете услышать короткие перерывы.
Последняя идея - использовать прокси-сервер потока. Обычно он используется для воспроизведения потоков в версиях Android ниже 8. В поточном прокси-сервере вы создаете ServerSocket, читаете из аудиопотока и пишете на плеер. Так что я могу управлять буферизацией там. Я могу кэшировать поток и записывать в MediaPlayer все, что захочу. Но. Он не работает с Android 8.
У меня возникло исключение: Connection reset by peer java.net.SocketException: соединение reset от однорангового узла. MediaPlayer 8 не хочет читать данные из сокета.
Таким образом, у меня есть два вопроса: 1) Какой еще способ реализации буферизации потока? 2) как настроить StreamProxy для Android 8?
Любые идеи приветствуются.
Спасибо