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

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

DSS14.png

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

16.png

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

17.png

为了防止此类问题再次发生,我们需要在代码中添加一个判断条件,首先判断起始的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, "\n#EXTINF:0.000000,", "", 1)
   str2 := strings.Replace(str1, "\nvideo0.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的应用场景远不止我们开头提到的线上课堂,包括视频慢直播、斗鱼等游戏直播也能够很好发挥作用,欢迎大家联系我们了解。

5.png

猜你喜欢

转载自blog.csdn.net/Black_3717/article/details/113569115