经过一段时间的攻克,目前TSINGSEE青犀视频研发团队已经将市面上可靠稳定的视频网页直播点播平台EasyDSS的录像下载功能研发完毕,实现方式可以参考:EasyDSS录像文件下载功能的实现。
在下载录像文件转码的时候,有可能会导致服务器cpu过高,然后整个服务变得异常卡顿,甚至崩溃。那么在使用该功能时,如何尽量避免EasyDSS下载录像转码出现cpu过高的问题是我们下一个要优化的点。
实际这种问题还是和请求的数量有关。如果一旦访问量过大,然后很多个请求都去下载或者播放指定时间段的录像,此时需要实现将ts文件转成MP4文件,用到的是ffmpeg去进行转码技术,但是请求多了也就是转码多了,cpu就会暴涨。
因为每次都会将下载或者播放的MP4文件放到缓存文件夹中,所以我们可以将缓存清除的时间设置成永久,然后调用接口先将MP4文件生成好放在缓存中,下一次再来请求则直接在缓存中拿。这样在一定程度上可以避免cpu过高的问题。
recordCachePath := conf2.GetConf().DirCache
mp4Path := filepath.Join(recordCachePath, fmt.Sprintf(`%s.mp4`, videoID))
if efile.Exisit(mp4Path) {
//存在直接返回
global.RecordCacheTime.Set(videoID, &global.RecordCacheTimeStruct{
Time: time.Now(),
Path: mp4Path})
r.operFile(c, operate, mp4Path, videoID)
return
}
在一步步的优化当中,EasyDSS变得越来越符合大家的使用习惯,其功能也日益丰富,满足了大多数项目场景的使用需求。EasyDSS也是支持二次开发,我们提供编程语言无关化的RESTfulAPI接口,可以很简单地进行二次开发和应用。