• RTMP协议web直播点播系统EasyDSS上传点播文件起始播放失败问题排查


    大家知道EasyDSS这个平台一个明显的特点就是支持视频直播和点播,普通的视频直播平台只能够支持视频流的直接传输播放,而EasyDSS能够将已经录制好的视频文件上传点播。这个重要的特性让EasyDSS在线上课堂的实现中发挥了重要作用。

    在上传点播文件的时候,一般情况下点击播放的时候是正常播放的,但是在EasyDSS的某款定制版本中,经常会出现起始无法播放的问题,尤其是在Linux平台的版本上频繁出现。

    由于是起始文件无法播放,我们想到可能是起始的ts文件出现了问题,然后进入后台存储ts文件的目录,看到起始ts文件大小为0kb,代表无内容,所以导致开始无法播放。

    为了防止此类问题再次发生,我们需要在代码中添加一个判断条件,首先判断起始的ts文件大小是否为0kb,如果是0kb,就将m3u8文件中的起始ts记录删除,从第二个ts文件开始播放。

    参考代码如下:

    func updateM3u8(destFile string) error {
       byt, err := ioutil.ReadFile(destFile)
       if err != nil {
          log.Println("读取m3u8错误", err)
          return err
       }
       str := string(byt)
       str1 := strings.Replace(str, "
    #EXTINF:0.000000,", "", 1)
       str2 := strings.Replace(str1, "
    video0.ts", "", 1)
       data := []byte(str2)
       err = ioutil.WriteFile(destFile, data, 777)
       if err != nil {
          log.Println("写入m3u8错误", err)
          return err
       }
       return nil
    }
    
    

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

  • 相关阅读:
    javascript 设计模式-----观察者模式
    javascript 设计模式-----工厂模式
    javascript 设计模式-----模块模式
    javascript 设计模式-----享元模式
    javascript 设计模式-----策略模式
    js操作Dom的一些方法简化
    Centos7下不删除python2.x的情况下安装python3.x
    解决:Linux SSH Secure Shell(ssh) 超时断开的解决方法
    shell变量常用方法
    apache目录别名
  • 原文地址:https://www.cnblogs.com/easydss/p/14313462.html
Copyright © 2020-2023  润新知