ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

新手搞懂 HLS 的 DVR 回看,直播时移常见踩坑

新手搞懂 HLS 的 DVR 回看,直播时移常见踩坑 一、什么是直播 DVR 时移回看很多监控直播、网课直播产品有回看功能也就是 DVR 时移。通俗讲直播正在播出用户可以拖动进度条回看几分钟、几十分钟之前已经播过的历史画面。点播视频全部分片提前生成好而直播 DVR 是在直播运行过程中服务器保留最近一段时间的历史 TS 分片M3U8 清单里面带上历史分片播放器就可以往回拖动。很多新手会把 DVR 直播和点播搞混。DVR 本质依旧是直播流M3U8 没有#EXT‑X‑ENDLIST结束标记只是服务器多保存了一部分旧分片回看窗口有时间上限不能无限往前面拖动。比如业务配置保留 30 分钟回看用户最多只能回看过去 30 分钟更早的分片服务器已经删除。实际开发测试经常遇到问题直播实时画面播放正常但是拖动回看就黑屏、花屏、报错。很多测试只看实时直播画面从来不测试拖动回看上线之后才收到用户反馈。遇到 DVR 回看类问题我会使用 m3u8live.cn 网页调试工具加载直播 M3U8尝试拖动进度条做回看操作快速确认回看功能是否正常。二、DVR 回看高频踩坑现象坑 1hls_list_size 设置过小回看窗口很短hls_list_size 控制 M3U8 清单保存分片的数量。分片数量少能回看的时间就短。业务需要 30 分钟回看但是分片数量设置太少只能回看几分钟。很多新手只关心实时直播流畅忽略这个参数会影响回看时长。坑 2推流断连重连缺少 #EXT‑X‑DISCONTINUITY 标记直播中间推流断开再恢复服务器没有写入不连续标记。往回拖动到断流的时间段播放器时间基准错乱出现花屏、音画不同步。坑 3DVR 回看窗口配置过大为了能看很久的历史把 hls_list_size 设置巨大。M3U8 索引文本体积暴涨每次播放器下载 M3U8 要下载大量文本增加请求耗时起播变慢服务器 CPU、内存压力上涨。回看不是越大越好按照产品需求设置合理窗口。坑 4前端播放器不做限制用户无限制往前拖拽服务端只保留 30 分钟历史分片但是前端进度条没有做时间限制用户拖到 30 分钟之前请求已经被删除的旧分片返回 404直接黑屏。坑 5CDN 缓存干扰 DVR M3U8 清单直播 DVR 的 M3U8 是动态不停变化的清单如果给 M3U8 设置较长 Cache‑Control 缓存浏览器拿到老旧清单回看分片不全拖动失败。三、DVR 回看简单排查步骤第一步把直播 M3U8 放到网页调试工具先确认实时直播画面正常再尝试拖动进度条往回看。如果工具拖动回看就黑屏花屏优先排查切片服务 hls_list_size、推流重连标记如果工具回看正常业务页面异常排查前端播放器是否做了进度条时间限制、hls.js 配置。第二步查看原始 M3U8 文本观察分片数量推流断开重连的位置有没有#EXT‑X‑DISCONTINUITY标记。第三步确认 M3U8 动态清单 Cache‑Control不能设置长缓存。四、业务开发测试建议hls_list_size 根据产品需要的回看时长计算不要过小也不要盲目设置超大。推流中断恢复切片服务务必输出不连续标记防止回看花屏。前端进度条要做时间范围限制不让用户拖动超出服务端保留的回看窗口避免请求过期分片 404。直播 DVR 的 M3U8 动态清单max‑age 设置很短禁止长缓存。测试直播不能只看实时画面一定要增加拖动回看的测试用例。五、总结DVR 时移回看是直播业务很实用的能力但它并不是点播回看窗口受服务器保存分片数量限制。hls_list_size、断流标记、CDN 缓存、前端进度限制任何一环出错拖动回看就会黑屏花屏。很多测试只测实时直播漏掉回看场景。借助网页调试工具做拖动回看测试可以提前发现 DVR 相关隐患上线少出问题。
返回列表