zoukankan      html  css  js  c++  java
  • 【开发记录】RTMP推流协议视频直播/点播平台EasyDSS截取录像时间与实际时间存在偏差如何解决?

    使用过TSINGSEE青犀视频产品的用户都知道,我们全线产品都是支持录像的,其中EasyDSS内的虚拟直播也可以通过推入直播间的方式设置录像(EasyDSS如何将虚拟直播进行录像)。

    当某位用户需要截取某天的某一段时间的录像,就需要手动输入时间和调用接口去获得录像。但是发现下载下来的录像及时间和需要截取的时间段有较大的偏差。

    这个问题其实是ts视频文件和时间不匹配导致的,我们的处理方法是将包含这一段录像时间的ts文件通过ffmpeg合成MP4文件,再对这个MP4文件进行截取,截取想要的时间段。

    修改代码如下,供参考:

    //截取视频
    func intercept(starttime string, endtime string, mp4PathTmp string, mp4Path string, m3u8TS []string) {
       if len(m3u8TS) == 0 {
          return
       }
       _, fileName := filepath.Split(m3u8TS[0])
       zeroStart := etime.StrYYYYMMDDHHmmssToTime(strings.Split(fileName, "-")[1]).Unix()
       start := etime.StrYYYYMMDDHHmmssToTime(starttime).Unix()
       end := etime.StrYYYYMMDDHHmmssToTime(endtime).Unix()
       //获取起始时间
       originStr := getOrigin(zeroStart, start)
       length := end - start
       lengthStr := strconv.Itoa(int(length))
       var params []string
       params = append(params, "-ss", originStr)
       params = append(params, "-t", lengthStr)
       params = append(params, "-accurate_seek", "-i", mp4PathTmp)
       params = append(params, "-codec", "copy", mp4Path)
       cmd := exec.Command(EasyTrans(), params...)
       cmd.Start()
       cmd.Wait()
    }
    

    以前我们分享过EasyDSS直播视频平台如何设置ts切片大小,大家可以简单了解一下。EasyDSS支持Flash、HTML5播放,兼容Windows、Android、iOS、Mac等操作系统,转码、上传一体化设计,使音视频资源转码后可立即面向互联网进行发布。

  • 相关阅读:
    Java创建和解析Json对象
    Tyche 2191 WYF的递推式
    Tyche 2147 旅行
    Tyche 2317 Color
    洛谷 P1092 虫食算
    洛谷 P3951 小凯的疑惑
    BZOJ 1800 [Ahoi2009]fly 飞行棋
    BZOJ 1034 [ZJOI2008]泡泡堂BNB
    洛谷 P2151 [SDOI2009]HH去散步
    Android开发环境配置
  • 原文地址:https://www.cnblogs.com/easydss/p/13787065.html
Copyright © 2011-2022 走看看