Почему Android MediaPlayer так долго готовит некоторые прямые трансляции для воспроизведения?

Я обнаружил большую разницу во времени, которое требуется Android MediaPlayer для подготовки к воспроизведению в реальном времени с разными потоками.

Жесткие данные

Я добавил ведение журнала между prepareAsync () и обратным вызовом onPrepared (MediaPlayer mp) и протестировал несколько потоков по несколько раз каждый. Время для каждого потока было очень согласованным (+/- одна секунда), и вот результаты:

  1. Новостной поток MPR: 27 секунд (http://newsstream1.publicradio.org:80/)
  2. MPR classic музыкальный поток: 15 секунд (http://classicalstream1.publicradio.org:80/)
  3. MPR Текущий поток: 7 секунд (http://currentstream1.publicradio.org:80/)
  4. PRI stream: 52 секунд (http://pri-ice.streamguys.biz/pri1)

Тесты проводились на Nexus S с Android 2.3.4 с подключением 3G (~ 1100 Кбит / с).

Воспроизведение MP3 без потоковой передачи аудиофайлы не являются проблемой.

Вот фрагменты того, как я проигрываю потоки:

Подготовьте MediaPlayer:

...
mediaPlayer.setDataSource(playUrl);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.prepareAsync();
...

Затем в onPrepared (MediaPlayer mp):

mediaPlayer.start();

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

Обновление: Я тестировал прямую трансляцию на физических устройствах с Android 1.6, 2.2 и 2.3.4 и эмуляторах с 1.6, 2.1, 2.2, 2.3.1 и 2.3.3. Я вижу только долгую задержку на 2.3.3 и 2.3.4. Старые версии начинают воспроизведение в течение 5 секунд.

48
задан Jonik 27 January 2014 в 22:19
поделиться