У меня есть сервер Icecast, работающий с Liquidsoap для потоковой передачи интернет-радио, и я заметил, что есть проблема с получением музыки на некоторых устройствах Android (например, вкладка Samsung Galaxy) - после нескольких секунд буферизации музыки воспроизведение музыки начинается примерно на секунду, затем резко останавливается, затем еще несколько секунд тишина, и только после этого начинает играть нормально. На некоторых других устройствах Android, например HTC desire - такого не происходит - музыка начинает нормально воспроизводиться после буферизации. Вот пример рассматриваемого потока: http://rdsradio.ru:8000/4th.mp3 а>
Это происходит, когда я открываю ссылку в браузере (Google Chrome) на устройстве Android. С тем же результатом я подключился к потоку Icecast из приложения для Android, которое сейчас разрабатываю, используя класс android.media.MediaPlayer: mediaPlayer.setDataSource("http://rdsradio.ru:8000/4th.mp3");
Кроме того, даже на этих проблемных устройствах я мог нормально подключаться и слушать потоки других радиоисточников Icecast, например http://dancewave.hopto.org:9990/dance.mp3 - вот почему я думаю, что что-то не так в моих настройках Icecast + Liquidsoap - из-за чего музыка перестает играть вначале.
<burst-on-connect>1</burst-on-connect>
<burst-size>64000</burst-size>
Я попытался изменить эти параметры в /etc/icecast2/icecast.xml, например, увеличить размер пакета до 10-20 раз или установить для параметра Burst-on-connect значение 0, но не заметил никакой разницы (я запускаю /etc/init.d/icecast2 reload
после изменение параметров для перезагрузки конфигурации).
Есть идеи - как исправить такое поведение?
ОБНОВЛЕНО: я попытался открыть поток в проигрывателе VLC на Android, и он работал без проблем, поэтому кажется, что проблема в использовании android.media.MediaPlayer (вероятно, встроенный аудиоплеер HTML5 в Google Chrome использует ту же библиотеку) . Я попробую использовать в приложении другой медиаплеер.