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.
- Tipo de video mime de Android HLS
- Android Dev - 3rd Party Media Player SDK u otras opciones?
- UDP Video Streaming en Android
- Android Exoplayer perfil no compatible 4 para video / mp4-es
- Live555 en Android
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.
- Una biblioteca para compresión / descompresión de vídeo sin pérdidas / bajo nivel de plataforma cruzada (C ++ / Android)
- android - cómo transmitir vídeo desde el teléfono al servidor?
- Transmisión de vídeo mediante RTSP: Android
- Retardo de streaming de video de Android: un mundo a través de una cámara de fotos de somene elses
- Android MediaRecorder setOutPutFile () para transmitir utilizando Socket
- Transmisión de vídeo de cámara Android
- Android - MediaPlayer's en Preparado Llamado incluso antes de que el flujo se prepare en Android 4.0+
- Múltiples archivos de vídeo que se reproducen simultáneamente en 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