前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyDSS录像m3u8文件#EXT-X-TARGETDURATION不标准的问题解决

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

原创
作者头像
TSINGSEE青犀视频
修改2021-10-14 18:03:42
1.2K0
修改2021-10-14 18:03:42
举报
文章被收录于专栏:TSINGSEE青犀视频

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

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

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

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

代码语言:javascript
复制
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)))))

以前该段代码为:

代码语言:javascript
复制
fmt.Fprintln(w, fmt.Sprintf("#EXT-X-TARGETDURATION:%s", fmt.Sprintf("%v", int(timeMax))))

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云点播
面向音视频、图片等媒体,提供制作上传、存储、转码、媒体处理、媒体 AI、加速分发播放、版权保护等一体化的高品质媒体服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档