zoukankan      html  css  js  c++  java
  • EasyDSS录像m3u8文件#EXT-X-TARGETDURATION不标准问题的解决

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

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

    分析 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) 向上取整后可以即符合标准。

  • 相关阅读:
    LeetCode173. 二叉搜索树迭代器
    LeetCode172. 阶乘后的零
    电商系统 SKU 设计和优化2
    电商系统 SKU 设计和优化
    JQuery/JS插件 排列组合 前端实现
    开源框架 码云 推荐项目
    Java idea 打包 编码问题 解决
    Java 基础 MyBatis-Plus 组装查询条件
    Java 基础 list 排序
    Java 基础 list 查询 ids
  • 原文地址:https://www.cnblogs.com/easydss/p/15407708.html
Copyright © 2011-2022 走看看