Я обнаружил большую разницу во времени, которое требуется Android MediaPlayer для подготовки к воспроизведению в реальном времени с разными потоками.
Жесткие данные
Я добавил ведение журнала между prepareAsync () и обратным вызовом onPrepared (MediaPlayer mp) и протестировал несколько потоков по несколько раз каждый. Время для каждого потока было очень согласованным (+/- одна секунда), и вот результаты:
Тесты проводились на 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 секунд.