前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RTMP协议Web直播点播系统EasyDSS视频平台解决无法获取指定时间快照问题

RTMP协议Web直播点播系统EasyDSS视频平台解决无法获取指定时间快照问题

原创
作者头像
TSINGSEE青犀视频
修改2021-02-18 17:32:32
3840
修改2021-02-18 17:32:32
举报
文章被收录于专栏:TSINGSEE青犀视频TSINGSEE青犀视频

TSINGSEE青犀视频开发的网页无插件视频直播点播平台EasyDSS为了便于大家的二次开发,提供了很多接口供大家调用,其中web界面快照的获取就是采用了快照接口的调用。

112.png
112.png

年前的时候TSINGSEE青犀视频团队遇到一个项目,在获取快照时,部分视频默认截取视最开始的视频快照,导致很多快照显示的是黑屏,因此该项目需要获取指定时间的快照图片作为视频的背景图。

我们在编写接口时,规则就是获取默认快照图片,而无法获取指定时间的快照图片。原因是代码将获取指定时间的图片操作屏蔽了,代码无法执行,因此该逻辑实际是有问题的。

30.png
30.png

我们对接口重新进行编写,传入获取视频中第多少秒的视频图片参数,并对对应的ts文件进行截取,获取图片。参考代码如下:

代码语言:javascript
复制
//解析获取最初的ts
data := efile.ReadFile(periodPath)
reg, _ := regexp.Compile("#EXTINF:" + `.*,`)
regTs, _ := regexp.Compile(ID + `-.*\.ts`)
ts := ""
insTime := 0
//最低一秒一个ts,一个小时为3600秒
timeS := reg.FindAllString(data, 4000)
if len(timeS) == 0 {
   c.AbortWithStatusJSON(http.StatusNotFound, consts.MsgErrorNotFound)
   return
}
for i := 0; i < len(timeS); i++ {
   time := strings.Split(strings.Split(timeS[i], ":")[1], ".")[0]
   timeInt, _ := strconv.Atoi(time)
   if second-timeInt <= 0 {
      insTime = second
      ts = filepath.Join(recordPath, ID, period[:8], period, regTs.FindAllString(data, 4000)[i+1])
      break
   }
   second = second - timeInt
}
filepath.Join(recordPath, ID, period[:8], period, reg.FindString(data))
snapTs(c, ts, strconv.Itoa(insTime), resolutionW, resolutionH, snapPath)
 

如果大家需要调用其他接口,可以参考TSINGSEE青犀视频EasyDSS平台官方提供的API文档:http://demo.easydss.com:10080/apidoc/。当然了,EasyDSS也支持大家实际部署测试,欢迎大家随时了解更多详细内容。

直播4.png
直播4.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档