Instalar un servicio de streaming¶
El objetivo de esta práctica es montar un servicio de streaming de audio y video para poder usar:
Un cliente multimedia
o un navegador web
Y poder ver el video o el audio que quieras. Como muestra de audio y video puedes utilizar cualquier archivo pero que tengas sus derechos (puedes usar alguna de estas muestras ).
Requisitos Previos
Conceptos del tema Servicios de Streaming (Audio y Video)
Tener montado un servicio HTTPs (Instalar un servicio HTTP) y asegurado con TLS
Hay diferentes alternativas para hacer streaming desde un servidor. En esta práctica te propongo usar HLS sobre Apache . Los requisitos son:
Acceder con usuario y contraseña (Autenticación Básica) para …
Ver y/o Escuchar el archivo (o archivos) en el directorio web (<tu servidor>/streaming)
Si tienes montado un reproductor de HLS en una web (con HTML + JS), no tengo que usar VLC. Pero cualquiera de los dos me sirve.
Puedes seguir los pasos en usar HLS sobre Apache (en inglés):
Requisitos de infraestructura:
Supongo que tienes tu sistema actualizado
¿Tienes un servicio HTTPs en el puerto 443? ¿En el 80? Puedes apagar el del puerto 80
¿Tienes instalado ffmpeg en tu servidor?
Prepara los archivos multimedia
Creas el directorio donde estarán tus recursos multimedia
Codificas el video (o audio) en los segmentos y el índice (playlist) ( hls with ffmpeg / HLS Packaging using ffmpeg )
Configuración del servidor web
No hace falta permitir el uso de .htaccess (AllowOverride None), porque puedes configurar el servidor
Defines el directorio de los archivos (Alias)
Defines el manejo de listas m3u8 (mime types) y segmentos (.ts)
Extra 1. Añadir autenticación¶
Configuras la autenticación (básica, sobre TLS) …
… con el usuario y contraseña (usuario1 / usuario1)
Solución¶
Creación de Archivos Multimedia
La creación y organización de los archivos (recuerda que se guardan segmentos y se organizan en listas) depende de muchos factores. Estos son dos ejemplos que te van a funcionar:
Revisando el manual de ffmpeg puedes ver esta muy sencilla (). Te sirve pero te deja el directorio lleno de archivos .ts y es un poco desordenada si tienes muchos archivos.
> ffmpeg -i sample_640x360.avi \
-c:v h264 \
-flags +cgop -g 48 \
-hls_time 2 \
sample_640x360.m3u8
Esta es más compleja ( Creating a Master Playlist with Ffmpeg ), pero se entiende paso a paso y ves el proceso completo de creación. Si necesitaras hacerlo en un sistema en producción, te permite ajustar los parámetros a tu medida. En este caso crea dos versiones del video, con diferentes resoluciones y tasa de transferencia. En el directorio crea dos directorios v0 y v1 con los segmentos y deja la lista principal en el principal (que es lo que te suele interesar).
> ffmpeg -y -i sample_1280x720_surfing_with_audio.mp4 \
-preset slow -g 48 -sc_threshold 0 \
-map 0:0 -map 0:1 -map 0:0 -map 0:1 \
-s:v:0 640x360 -c:v:0 libx264 -b:v:0 365k -s:v:1 960x540 -c:v:1 libx264 -b:v:1 2000 \
-c:a copy -var_stream_map "v:0,a:0 v:1,a:1" \
-master_pl_name sample_1280x720_surfing_with_audio.m3u8 \
-f hls -hls_time 6 -hls_list_size 0 \
-hls_segment_filename "v%v/fileSequence%d.ts" v%v/prog_index.m3u8
Configuración del servidor
Documentado en el archivo httpd.conf global httpd.conf
):
Configuración del directorio
Configuración de los tipos MIME y el manejo
Y ya está, para verlo puedes usar VLC con el url de la lista o un navegador que lo tenga integrado ( Streaming Compatibility )