zoukankan      html  css  js  c++  java
  • web无插件直播点播系统EasyDSS获取指定时间录像m3u8播放地址兼容iOS平台吗?

    M3U8文件是一个记录索引的纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。TSINGSEE青犀视频EasyDSS直播点播系统支持调用m3u8播放地址进行二次开发或者集成。

    目前在m3u8地址上仍存在的问题是,调用获取指定时间录像的m3u8播放地址用苹果手机进行播放,会出现黑屏无法播放的问题,但是其他平台并无该问题。所以这个成为我们亟待解决的问题。

    经过研发的分析,应该是后台在生成新的m3u8文件出现了问题,新的m3u8文件对内容不是很严谨,其中在统计播放时长的那个参数一开始并没有统计,导致iOS系统在识别的时候出现问题。

    因此我们从代码中对最大ts切片的时长和总时长进行统计,将数据写到对应的m3u8参数中。

    for _, tsname := range *strs {
       realTsPaths := strings.Split(tsname, sDay+"/")
       tsId := strings.Split(realTsPaths[1], "/")
       periodPath := filepath.Join(realTsPaths[0], sDay, tsId[0], fmt.Sprintf(`%s_record.m3u8`, id))
       timeStr = getTsTime(periodPath, tsId[1])
       time := strings.Split(strings.Split(timeStr, ":")[1], ",")[0]
       timeFloat, _ := strconv.ParseFloat(time, 64)
       if timeFloat > timeMax {
          timeMax = timeFloat
       }
       timeAll = timeAll + timeFloat
    }
    fmt.Fprintln(w, fmt.Sprintf("#EXT-X-TARGETDURATION:%s", fmt.Sprintf("%v", int(timeMax))))
    fmt.Fprintln(w, fmt.Sprintf("#EXT_X_TOTAL_DURATION:  %s", fmt.Sprintf("%v", timeAll)))
    
    for _, tsname := range *strs {
       realTsPaths := strings.Split(tsname, sDay+"/")
       tsId := strings.Split(realTsPaths[1], "/")
       periodPath := filepath.Join(realTsPaths[0], sDay, tsId[0], fmt.Sprintf(`%s_record.m3u8`, id))
       timeStr = getTsTime(periodPath, tsId[1])
       fmt.Fprintln(w, timeStr)
       fmt.Fprintln(w, realTsPaths[1])
    }
    
    fmt.Fprintln(w, "#EXT-X-ENDLIST")
    w.Flush()
    
    

    关于ts文件,之前我们介绍过自主合并TS文件为MP4格式播放的方法,大家也可以了解一下。EasyDSS的应用场景远不止我们开头提到的线上课堂,包括视频慢直播、斗鱼等游戏直播也能够很好发挥作用,欢迎大家联系我们了解。

  • 相关阅读:
    form编码方式application/x-www-form-urlencoded和multipart/form-data的区别
    CentOS开启telnet服务
    借助英语搞清会计中“借”/“贷”的含义(转载)
    乘法器的Verilog HDL实现(转载)
    Meth | 关闭mac自带apache的启动
    Meth | Git冲突:commit your changes or stash them before you can merge. 解决办法
    Meth | Git 避免重复输入用户名和密码方法
    Meth | git Please move or remove them before you can merge
    Meth | git 常用命令
    Meth | 小团队git开发模式
  • 原文地址:https://www.cnblogs.com/easydss/p/14437219.html
Copyright © 2011-2022 走看看