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等操作系统,转码、上传一体化设计,使音视频资源转码后可立即面向互联网进行发布。

  • 相关阅读:
    VUE参考---组件切换动画
    VUE参考---组件切换方式
    VUE参考---为什么组件中的data必须是一个方法且返回一个对象
    VUE参考---组件中的data和methods
    VUE课程---26、组件
    VUE课程---25、发ajax请求
    VUE课程---24、插件
    Spring3.2.4集成quartz2.2.1定时任务(demo)
    TODO
    【转】Mac 程序员的十种武器
  • 原文地址:https://www.cnblogs.com/easydss/p/13787065.html
Copyright © 2011-2022 走看看