• Configuración de ejemplo
  • Directivas
  • hls
  • hls_buffers
  • hls_forward_args
  • hls_fragment
  • hls_mp4_buffer_size
  • hls_mp4_max_buffer_size

los ngx_http_hls_module El módulo proporciona compatibilidad con HTTP Live Streaming (HLS) en el lado del servidor para archivos multimedia MP4 y MOV. Estos archivos suelen tener la .mp4, .m4v, .m4a, .mov, o .qt extensiones de nombre de archivo. El módulo admite códec de video H.264, códecs de audio AAC y MP3.

Para cada archivo multimedia, se admiten dos URI:

  • Un URI de lista de reproducción con el “.m3u8”Extensión de nombre de archivo. El URI puede aceptar argumentos opcionales:
    • start” y “end”Define los límites de la lista de reproducción en segundos (1.9.0).
    • offset”Cambia una posición de reproducción inicial a la compensación de tiempo en segundos (1.9.0). Un valor positivo establece un desfase de tiempo desde el principio de la lista de reproducción. Un valor negativo establece un desplazamiento de tiempo desde el final del último fragmento de la lista de reproducción.
    • len”Define la longitud del fragmento en segundos.
  • Un fragmento de URI con el “.ts”Extensión de nombre de archivo. El URI puede aceptar argumentos opcionales:
    • start” y “end”Define los límites de los fragmentos en segundos.

Este módulo está disponible como parte de nuestro suscripción comercial.

Configuración de ejemplo

location /hls;hls_fragment5s;hls_buffers1010m;hls_mp4_buffer_size1m;hls_mp4_max_buffer_size5m;root /var/video/;

Con esta configuración, los siguientes URI son compatibles con “/var/video/test.mp4” expediente:

http://hls.example.com/test.mp4.m3u8?offset=1.000&start=1.000&end=2.200
http://hls.example.com/test.mp4.m3u8?len=8.000
http://hls.example.com/test.mp4.ts?start=1.000&end=2.200

Directivas

Sintaxis: hls;
Defecto:
Contexto: location

Activa la transmisión HLS en la ubicación circundante.

Sintaxis: hls_buffersnumbersize;
Defecto: hls_buffers 8 2m;
Contexto: http, server, location

Establece el máximo number y size de búferes que se utilizan para leer y escribir marcos de datos.

Sintaxis: hls_forward_args on | off;
Defecto: hls_forward_args off;
Contexto: http, server, location

Esta directiva apareció en la versión 1.5.12.

Agrega argumentos de una solicitud de lista de reproducción a URI de fragmentos. Esto puede ser útil para realizar la autorización del cliente en el momento de solicitar un fragmento, o cuando se protege un flujo HLS con el ngx_http_secure_link_module módulo.

Por ejemplo, si un cliente solicita una lista de reproducción http://example.com/hls/test.mp4.m3u8?a=1&b=2, los argumentos a=1 y b=2 se agregará a los URI de los fragmentos después de los argumentos start y end:

#EXTM3U#EXT-X-VERSION:3#EXT-X-TARGETDURATION:15#EXT-X-PLAYLIST-TYPE:VOD#EXTINF:9.333,
test.mp4.ts?start=0.000&end=9.333&a=1&b=2
#EXTINF:7.167,
test.mp4.ts?start=9.333&end=16.500&a=1&b=2
#EXTINF:5.416,
test.mp4.ts?start=16.500&end=21.916&a=1&b=2
#EXTINF:5.500,
test.mp4.ts?start=21.916&end=27.416&a=1&b=2
#EXTINF:15.167,
test.mp4.ts?start=27.416&end=42.583&a=1&b=2
#EXTINF:9.626,
test.mp4.ts?start=42.583&end=52.209&a=1&b=2

#EXT-X-ENDLIST

Si una secuencia HLS está protegida con el ngx_http_secure_link_module módulo, $uri no debe utilizarse en el secure_link_md5 expresión porque esto provocará errores al solicitar los fragmentos. URI base debe usarse en lugar de $uri ($hls_uri en el ejemplo):

http
    ...

    map$uri$hls_uri
        ~^(?.*).m3u8$ $base_uri;
        ~^(?.*).ts$   $base_uri;default$uri;server
        ...

        location /hls/hls;hls_forward_argson;alias /var/videos/;secure_link$arg_md5,$arg_expires;secure_link_md5"$secure_link_expires$hls_uri$remote_addr secret";if ($secure_link = "")return403;if ($secure_link = "0")return410;
Sintaxis: hls_fragmenttime;
Defecto: hls_fragment 5s;
Contexto: http, server, location

Define la longitud predeterminada del fragmento para los URI de lista de reproducción solicitados sin el “len” argumento.

Sintaxis: hls_mp4_buffer_sizesize;
Defecto: hls_mp4_buffer_size 512k;
Contexto: http, server, location

Establece la inicial size del búfer utilizado para procesar archivos MP4 y MOV.

Sintaxis: hls_mp4_max_buffer_sizesize;
Defecto: hls_mp4_max_buffer_size 10m;
Contexto: http, server, location

Durante el procesamiento de metadatos, puede ser necesario un búfer más grande. Su tamaño no puede exceder el especificado size, de lo contrario, nginx devolverá el error del servidor 500 (Error interno del servidor) y registrará el siguiente mensaje:

"/some/movie/file.mp4" mp4 moov atom is too large:
12583268, you may want to increase hls_mp4_max_buffer_size