尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何用 ZLMediaKit 的 HLS 时移实现直播视频实时回看(完整指南)

如何用 ZLMediaKit 的 HLS 时移实现直播视频实时回看(完整指南) 如何用 ZLMediaKit 的 HLS 时移实现直播视频实时回看完整指南【免费下载链接】ZLMediaKitWebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT/STUN/TURN server and client framework based on C11项目地址: https://gitcode.com/GitHub_Trending/zl/ZLMediaKit做安防监控的同事曾问直播还在推流我想立刻回看刚才 30 分钟的画面录播文件还没生成完怎么办其实答案就藏在 ZLMediaKit 的 HLS 模块里——它在直播的同时把流切成 TS 小文件并实时维护 M3U8 索引只要把hls.segNum这一个参数改成 0直播 HLS 就变成直播时移观众可以边播边回看几分钟前的内容而不必等录制文件收尾。为什么普通录制满足不了实时回看传统的 MP4 录制是播完一场、落盘一个文件文件没写完就无法播放。但监控、课堂、赛事这类场景里用户往往在事件发生的十几秒后就想知道刚才发生了什么。HLS 的存储方式天生不一样它把直播流按秒切成一段段小文件TS同时维护一个 M3U8 索引。可以把直播 HLS 想象成一本只保留最近几页的书而时移模式就是把这本书变成边写边翻、整本保留——播放器不断刷新 M3U8就能看到越来越长的历史画面。核心原理一个参数决定直播还是时移ZLMediaKit 默认配置是保留最近 3 个切片播放列表滚动更新这是标准直播行为。关键在于hls.segNum这个参数segNum3默认M3U8 只保留最近 3 个切片老切片从索引中移除纯直播。segNum0切片不删除M3U8 全量记录所有切片列表直播流持续落盘为可回看内容。segKeep1M3U8 对外仍表现为直播索引滚动但磁盘上所有切片全部保留供点播每个切片目录还会生成vod.m3u8用于回看该时段的录像。修改位置在配置文件的[hls]段落见配置文件。时移模式的核心改动就一行[hls] segNum0改完后拉一路 HLS 流M3U8 里会持续追加新切片播放器从头播放这个 M3U8就是从录制开始到现在的全程回看。切片写入逻辑在 HlsMaker 源码 中_seg_number 0时走录制分支、不触发切片清理对照源码读一遍很快能看懂。三个配套参数怎么调⏱️segDur切片时长默认 2 秒回看延迟的下限就是切片时长——最后一个切片没写满之前它不会进索引。监控回看建议 1~2 秒低延迟、文件多普通直播回看 4~10 秒更省磁盘 I/O。segRetain索引移除后磁盘多留的切片数默认 5切片从 M3U8 移除后不会立刻删而是再留 5 个。这给边播边删留了缓冲时移模式segNum0下它不参与清理保持默认即可。️deleteDelaySec直播 HLS 删除延时默认 10 秒流断开后切片文件延迟 10 秒才删除避免正在下载最后几片的播放器 404。时移场景如果希望断流后录像立刻可查这个参数和segNum0组合使用时可以忽略。另外时移模式segNum0下 HLS 会一直生成不受hls按需生成开关的限制见 MediaSource 源码 中的注释也就是说只要有人推流回看内容就在持续累积。验证与常见坑验证方法很简单推一路流后请求该流的 M3U8观察#EXTINF行是否持续增加且不回卷用浏览器或支持时移的 HLS 播放器从头播放应能看到从录制起点开始的画面。几个容易踩的点磁盘会一直涨。segNum0 意味着切片只增不减必须配好清理策略比如按天归档长直播前算好空间。回看深度 推流时长。时移是从本场录制开始回看不是无限历史需要跨天的完整录像请配合 MP4 录制或按周期重启录制。播放器要支持时移刷新。普通直播播放器只追最后几片不会从头拉需要客户端主动从头请求 M3U8 并周期性刷新仓库里的 webassists 播放器目录 和www/下的示例页可以作为起点。延迟别指望低于切片时长。想1 秒回看就调小 segDur但文件数量和索引更新频率会上升按服务器 I/O 能力权衡。适用边界这套方案解决的是本场直播内、分钟到小时级的即时回看实现成本低一行配置代价是切片文件占用的存储。如果需求是回看昨天的录像应把它当作实时性最高的第一层再叠加 MP4 完整录制做长期存档两者共用同一份推流互不影响。【免费下载链接】ZLMediaKitWebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT/STUN/TURN server and client framework based on C11项目地址: https://gitcode.com/GitHub_Trending/zl/ZLMediaKit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表