N
O
D
E
M
E
D
I
A
Thinking
首页
产品
文档
博客
订单
文档
开启HLS功能
2026年 5月 20日 下午3:36
## 简介 HLS是目前浏览器无插件直播兼容度最高的协议,但是存在延迟大的问题。 http-flv普遍可以达到秒级甚至毫秒级延迟,HLS在Apple官方推荐的参数是10秒一个切片,一个m3u8列表包含3个ts切片,这就是为什么大部分HLS协议延迟30秒的原因。 nms 支持自定义切片时长和列表长度,默认配置未开启HLS,因为开启后会产生文件IO, 若有这方面需求请手动开启。 ## 开启方式 打开config.ini ```ini [hls] # hls_path 切片临时存放路径, 必须填入有效且可写入的路径. 若不设置路径, 则不会开启hls服务\生成hls切片 hls_path = hls # hls_time 切片时间, 单位秒, 默认2 # 经过这段时间后,将在下一个关键帧上剪切片段. 并不代表肯定会以这个设定值而切片,还要根据关键帧间隔而定. # 低切片可有效降低hls延迟, 但也需要推流端使用固定的低关键帧间隔编码, 如果不固定关键帧间隔,会造成视频卡顿 hls_time = 2 # hls_list 最大播放条目, 默认3 hls_list = 3 # hls_allow_cache 显式设置客户端是否缓存媒体段。 hls_allow_cache = false ``` ## 延迟说明 ```ini hls_time = 2 hls_list = 3 ``` 代表每2秒切片一个ts,m3u8列表中保持3个ts,这样算下来,延迟是6秒。 ## 极限低延迟 ```ini hls_time = 1 hls_list = 2 ``` 代表每1秒切片一个ts,m3u8列表中保持2个ts,这样算下来,延迟是2秒。 这种低延迟的设置,有两个**必要**的前提:推流时,视频编码的关键帧间隔是1秒一个关键帧,网络延迟低于100毫秒且带宽足够。 可用做内网环境应用,需要自行评估是否能满足流畅度。 ## 播放方式 NodeMediaServer V3版的HLS流同样遵循 /app/stream 资源定位规范,只需要添加.m3u8后缀。 如推流地址: ` rtmp://server_ip/live/stream ` 则hls地址为 ` http://server_ip:8000/live/stream.m3u8 ` ## 会话型HLS nginx-rtmp对HLS的实现模式,只是简单的在推流后只生成m3u8和ts文件,并提供http的静态文件服务。无法进行会话管理,无法统计hls播放量,无法获得播放和结束的事件。 NodeMediaServer V3的HLS实现,采用了session会话管理,可以定位访问资源的用户id,ip,访问参数,可以触发事件接口,可以使用内置鉴权规则,可以统计播放量,可以统计用户使用的流量,可以获得用户开始播放和结束播放的事件。 ## H265/HEVC 编码的 HLS流 NodeMediaServer支持H265/HEVC编码的视频输出HLS流,m3u8采用v7,视频采用fMP4切片。 注意,只有MacOS 10.13,iOS 11之后支持,所有chrome,firefox不支持。Windows下,ie11,edge12-18在硬件支持的情况下支持。部分手机内置浏览器支持(小米)。 具体分析请看:[浏览器播放H265/HEVC视频的可行性分析](http://bashell.nodemedia.cn/archives/%e6%b5%8f%e8%a7%88%e5%99%a8%e6%92%ad%e6%94%beh265-hevc%e8%a7%86%e9%a2%91%e7%9a%84%e5%8f%af%e8%a1%8c%e6%80%a7%e5%88%86%e6%9e%90.html)
嘿,我是小R,需要帮助随时找我哦
QQ客服:281269007
邮件支持
扫码加微信
回到顶部