EasyDSS录像m3u8文件#EXT-X-TARGETDURATION不标准问题的解决

本文介绍了EasyDSS在部分浏览器下视频播放失败的问题,原因是m3u8文件中的#EXT-X-TARGETDURATION值不正确。通过修正代码,使用math.Ceil确保时间值向上取整,从而符合标准,解决了播放失败的状况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EasyDSS 作为一款支持视频点播的流媒体传输平台,可以自行上传视频文件,也可将上传的点播文件作为虚拟直播进行播放。同时,在视频文件上传方面,我们也增加了新功能,即定时将最新的录像文件上传到文件服务器。之前为大家介绍过该功能的实现,大家有兴趣的话可以翻阅我们以往的博文了解一下。

EasyDSS架构绿.png

部分用户反馈 EasyDSS 生成的任意录像在部分浏览器下无法播放,对应的 hls 流如下:

image.png

分析 m3u8 文件,发现 #EXT-X-TARGETDURATION 不正确,#EXT-X-TARGETDURATION 代表的是整个 m3u8 文件中最大时长的 TS 文件,部分播放器如果发现该值不是最大的,则会出现播放失败的情况。

针对此问题,我们需要修改代码如下:

fmt.Fprintln(w, "#EXTM3U")
fmt.Fprintln(w, "#EXT-X-VERSION:3")
fmt.Fprintln(w, "#EXT-X-MEDIA-SEQUENCE:0")
fmt.Fprintln(w, fmt.Sprintf("#EXT-X-TARGETDURATION:%s", fmt.Sprintf("%v", int(math.Ceil(timeMax)))))

以前该段代码为:

fmt.Fprintln(w, fmt.Sprintf("#EXT-X-TARGETDURATION:%s", fmt.Sprintf("%v", int(timeMax))))

int 代表让 timeMax 取整,直接向下取整,因此使用 mathCeil(timeMax) 向上取整后可以即符合标准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值