VIDEO to HLS Segmented Streaming

Sábado 8 de marzo de 2014, por Aitor Roma Vázquez

El principal problema que nos encontramos a la hora de realizar streaming a dispositivos móviles es que tiene de cargar el buffer y eso hace que en conexiones 3G por ejemplo no acabe de funcionar bien el stream.

Con este pequeño tip usaremos ffmpeg para transformar el video en archivos mas pequeños segmentados en formato "TS" estos ficheros se generan con un archivo principal que es el que debe reproducir el dispositivo con extensión m3u8.

Creación del script

# nano /usr/bin/vid2hls

#!/bin/bash
HLSDOC=/var/www/html
cd $HLSDOC
ffmpeg -loglevel quiet -i $1 -c:v libx264 -profile:v baseline -level 3.1 -c:a aac -strict experimental -f mpegts - | ffmpeg -i - -c copy -map 0 -f segment -segment_list $2.m3u8 -segment_format mpegts -segment_time 10 $2%03d.ts

El parametro HLSDOC, es el directorio donde guardaremos el stream.
Damos permisos de ejecución

# chmod +x  /usr/bin/vid2hls

Modo de empleo

# vid2hls /path/to/video    streamname

Ejemplo:

# vid2hls /var/Videos/tears.mp4    tears

Esto genera los siguientes archivos:

# ls /var/www/html/tears* -l
-rw-r--r-- 1 root root 5326792 mar  9 00:00 /var/www/html/tears000.ts
-rw-r--r-- 1 root root 3142796 mar  9 00:00 /var/www/html/tears001.ts
-rw-r--r-- 1 root root 2054652 mar  9 00:00 /var/www/html/tears002.ts
-rw-r--r-- 1 root root 1322580 mar  9 00:00 /var/www/html/tears003.ts
-rw-r--r-- 1 root root     233 mar  9 00:00 /var/www/html/tears.m3u8

Configurar Nginx para Servir .m3u8

Añadir la siguiente directiva en el VirtualHost del servidor.

location /m {
   types {
        application/vnd.apple.mpegurl m3u8;
   }
   alias /var/www/html;
}

Ahora podríamos reproducir el video visitando la web

http://nuestroservidor.com/m/tears.m3u8

Ejemplo:

HLS Segmentated - Mobile

Si visitais la web desde un Ipad o Iphone o con el Navegador Safari, vereis el video.
Tambien funciona en las ultimas versiones de Android.

Para más información de nuestros servicios de streaming puede visitar este link.
http://lrstreaming.redaven.com

1 Mensaje

  • VIDEO to HLS Segmented Streaming El 7 de mayo de 2014 a las 14:28 , por Daniel

    Hola buenas tardes, tengo un receptor de satelite el cual lleva instalado android, me gustaria saber si es posible hacer algo parecido.

    Si es posible, lo que me gustaria seria poder enviar la señal del video a cualquier ordenador de mi casa.

    Por ejemplo, una manera facil de poder disfrutar de dicho video desde el ordenador, entrando por el navegador a http://192.168.1.xxx/video.

    o algo asi similar.

    Gracias!

    Responder este mensaje

Comentar este artículo