菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
238
0

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

原创
05/13 14:22
阅读数 12954

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

发表评论

0/200
238 点赞
0 评论
收藏
为你推荐 换一批