Android 3.x / HLS cómo iniciar al final de la secuencia

Estoy jugando un stream HLS con el siguiente código:

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(); 

Con este código, lo que veo en el video es de aproximadamente 5 minutos de retraso de acuerdo con la misma secuencia que se reproduce en VLC.

El reproductor está empezando a reproducir el primer fragmento del archivo .m3u8. Pero la especificación del hls precisa que el primer pedazo es el más viejo y el último el más nuevo. Así que el jugador debe comenzar a jugar la última parte del archivo.

Sospecho que hay algo que ver con los parámetros del método setDataSource, pero no puedo imaginar cómo.

Me encontré con el mismo problema – parece que cuando se inicia un feed HLS en vivo (que no tiene la etiqueta EXT-X-ENDLIST) en Android, hay un error en el núcleo de análisis de componentes HLS que no se inicia en el punto en vivo (Fin del feed), y en su lugar comienza al principio del flujo.

Hay un error introducido en code.google.com acerca de esto – puede "star" o upvote allí:

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

No creo que la especificación de HLS no indique explícitamente qué segmento comenzar para, pero generalmente comienza en el tercer último segmento para hls vivos.

La secuencia a la que se está refiriendo es una fuente HLS de Video on Demand (VOD). La única diferencia es que la lista de reproducción termina con # EXT-X-ENDLIST. Cuales causas:

  • El reproductor no actualiza la lista de reproducción
  • Comenzando en el primer pedazo.
 $ 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

Echa un vistazo a la página de Envivio creo que tienen algunos canales de HLS en vivo que puede probar con.

Un comentario general: no confíe en VLC cuando se trata de probar HLS.

  • ¿Cómo obtener estadísticas de tráfico de red para aplicaciones de streaming de vídeo en Android?
  • Android obtiene la ruta de origen de vídeo de VideoView
  • Android - Transmitir la cámara como RTMP stream
  • Reproducción automática de vídeos vimeo en la vista web de Android
  • Utilizar MediaCodec para H264 streaming
  • Android Video Streaming - ¿Dispositivo compatible?
  • Cómo grabar vídeo en salida de MPEG-2 TS y formato de codificación de audio ACC
  • ¿Cómo instalo Wowza Streaming Engine en Google Cloud?
  • Transmitir video en vivo de un teléfono a otro utilizando socket fd
  • RTMP android aftek
  • Android Video View en otro hilo y problema con android 2.1
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.