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.
- Problemas de sincronización de Android MediaPlayer
- Transmitir vídeo en vivo desde la cámara en android
- Cómo reproducir vídeos en línea en Android?
- Pantalla de MediaProjection de Android que refleja al explorador de Web sobre USB
- Conecte el androide al LAN local vía el teléfono (sobre wifi O vía la conexión del USB)
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.
- Cómo mostrar la barra de progreso antes de reproducir el video
- Adición de VideoView a un diseño XML
- GsaIOException Desbordamiento del búfer, sin espacio disponible
- Android Video View en otro hilo y problema con android 2.1
- Cómo usar RajawaliVR o Rajawali para jugar un video 360
- Multiplexación de flujos de audio y vídeo en línea en android
- ¿Cómo acceder CORRECTAMENTE a datos de cámara LIVE en Android? ¿Cómo lo hace Skype?
- Cómo agregar funcionalidad WebRTC en la aplicación de Android
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í:
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 hacer clic en el botón de "búsqueda" del teclado con Robotium?
- Cómo saber si una actividad ya ha comenzado