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

原标题:RTMP协议Web直播点播系统EasyDSS视频平台解决无法获取指定时间快照问题
TSINGSEE青犀视频开发的网页无插件视频直播点播平台EasyDSS为了便于大家的二次开发 , 提供了很多接口供大家调用 , 其中web界面快照的获取就是采用了快照接口的调用 。

RTMP协议Web直播点播系统EasyDSS视频平台解决无法获取指定时间快照问题
文章图片
年前的时候TSINGSEE青犀视频团队遇到一个项目 , 在获取快照时 , 部分视频默认截取视最开始的视频快照 , 导致很多快照显示的是黑屏 , 因此该项目需要获取指定时间的快照图片作为视频的背景图 。
我们在编写接口时 , 规则就是获取默认快照图片 , 而无法获取指定时间的快照图片 。 原因是代码将获取指定时间的图片操作屏蔽了 , 代码无法执行 , 因此该逻辑实际是有问题的 。

RTMP协议Web直播点播系统EasyDSS视频平台解决无法获取指定时间快照问题
文章图片
我们对接口重新进行编写 , 传入获取视频中第多少秒的视频图片参数 , 并对对应的ts文件进行截取 , 获取图片 。 参考代码如下:
//解析获取最初的ts
data:=efile.ReadFile(periodPath)
reg,_:=regexp.Compile("#EXTINF:"+`.*,`)
regTs,_:=regexp.Compile(ID+`-.*.ts`)
ts:=""
insTime:=0
//最低一秒一个ts , 一个小时为3600秒
timeS:=reg.FindAllString(data,4000)
iflen(timeS)==0{
c.AbortWithStatusJSON(http.StatusNotFound,consts.MsgErrorNotFound)
return
}
fori:=0;i<len(timeS);i++{
time:=strings.Split(strings.Split(timeS[i],":")[1],".")[0]
timeInt,_:=strconv.Atoi(time)
ifsecond-timeInt<=0{
【RTMP协议Web直播点播系统EasyDSS视频平台解决无法获取指定时间快照问题】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也支持大家实际部署测试 , 欢迎大家随时了解更多详细内容 。

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