ts_hls
`ts_hls` 指令允许在 NGINX 中为 MPEG-TS 流生成实时 HLS (HTTP Live Streaming) 内容。
NGINX MPEG-TS Live Module
·
location
语法ts_hls path=PATH [segment=MIN[:MAX]] [segments=NUMBER] [max_size=SIZE] [noclean];
默认值none
上下文location
参数1+
说明
ts_hls 指令在 NGINX 的 location 块中使用,用于为 MPEG-TS 内容设置实时 HLS。指定此指令时,需要一个 PATH 参数,用来定义存放 HLS 播放列表和分片文件的目录。如果指定的目录尚不存在,NGINX 会创建该目录。对于每个活动的 MPEG-TS 流,NGINX 会在所指定的 PATH 下创建一个对应的子目录,子目录名由 URI 的最后一部分派生。
HLS 分片的生成由多个可配置参数控制。segment 参数定义每个分片的最小和最大时长,默认最小值为 5 秒。这意味着分片将在视频关键帧处开始创建,如果在最大时长内没有出现下一个关键帧,分片将被截断。此外,segments 参数可以控制 HLS 播放列表中可保留的最大分片数量——随着新分片的加入,较旧的分片将被移除,从而有效管理内存使用。
可以通过 max_size 参数限制分片的大小,并通过 noclean 控制文件清理,noclean 会阻止自动删除较旧的文件。需要注意的是,多个 ts_hls 指令中指定的同一路径不能被不同流重复使用,以确保每个流的文件得到独立管理。
配置示例
location /live {
ts;
ts_hls path=/var/hls segment=10s segments=5;
}⚠
确保所指定的 PATH 对 NGINX 进程是可写的。
⚠
避免在多个 ts_hls 或 ts_dash 指令中重复使用相同的路径,因为这会导致冲突。
⚠
如果使用动态段或大小,请注意内存管理,以避免过度消耗资源。