Android 3.x / HLS, как начать в конце потока - PullRequest
4 голосов
/ 09 февраля 2012

Я играю поток HLS со следующим кодом:

mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource("http://iphoned5.akamai.com.edgesuite.net/mhbarron/nasatv/nasatv_all.m3u8");
mediaPlayer.setDisplay(holder);
mediaPlayer.setOnBufferingUpdateListener(this);
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setOnVideoSizeChangedListener(this);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.prepareAsync();

С этим кодом то, что я вижу в видео, запаздывает примерно на 5 минут в соответствии с тем же потоком, воспроизводимым в VLC.

Плеер начинает воспроизводить первый фрагмент файла .m3u8.Но спецификация hls уточняет, что первый блок является старшим, а последний - самым новым.Таким образом, проигрыватель должен начать воспроизведение последнего фрагмента файла.

Я подозреваю, что что-то связано с параметрами метода setDataSource, но я не могу понять, как.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2013

Я столкнулся с той же проблемой - похоже, что когда вы запускаете живой канал HLS (у которого нет тега EXT-X-ENDLIST) на Android, существует ошибка в основных компонентах синтаксического анализа HLS, которая не запускается притекущая точка (конец канала), и вместо этого она начинается в начале потока.

На code.google.com имеется ошибка, которую вы можете добавить по этому поводу - вы можете добавить звездочку или поставить ее там:

http://code.google.com/p/android/issues/detail?id=37156

1 голос
/ 17 февраля 2012

Я не верю, что спецификация HLS явно не указывает, с какого сегмента начинать, но обычно она начинается в третьем последнем сегменте для живых hls.

Поток, на который вы ссылаетесь, - это видеопо требованию (VOD) HLS источник.Единственное отличие состоит в том, что список воспроизведения завершается с помощью # EXT-X-ENDLIST.Что вызывает:

  • проигрыватель не обновляет список воспроизведения
  • , начиная с самого первого блока.
$ curl http://iphoned5.akamai.com.edgesuite.net/mhbarron/nasatv/nasatv_700.m3u8
...
#EXTINF:10,
http://iphoned5.akamai.com.edgesuite.net/mhbarron/nasatv/nasatv_700/Seg_060110_103747_44/nasatv_700_060110_103747_87966.ts
#EXTINF:0,
http://iphoned5.akamai.com.edgesuite.net/mhbarron/nasatv/nasatv_700/Seg_060110_103747_44/nasatv_700_060110_103747_87967.ts
#EXT-X-ENDLIST

Посмотрите на Envivioстраница Я считаю, что у них есть несколько живых HLS-каналов, с которыми вы можете протестировать.

Общий комментарий: не полагайтесь на VLC, когда дело доходит до тестирования HLS.

...