EasyGBS是基于国标GB/T28181协议的视频云服务平台,不仅支持无缝、完整接入内网或者公网的国标设备,在输出上,提供RTSP、RTMP、FLV、HLS、WebRTC等多种格式视频流的分发服务,实现全平台、全终端输出。
有用户反馈,在使用EasyGBS设备录像时,发现下载的是ps文件,正常应该下载的是MP4文件。针对该反馈,我们立即进行了排查。
因为ps文件的特殊性,很多播放器都不支持,所以需要将ps文件转换成mp4文件,方便用户进行播放。
可添加如下参考代码,利用ffmpeg将ps转换为mp4:
if len(filenamehz) == 2 && filenamehz[1] == "ps" {
outFile := filepath.Join(utils.DataDir(), "downloads", fmt.Sprintf("%s.mp4", filenamehz[0]))
inFile := filepath.Join(utils.DataDir(), "downloads", filename)
if _, err := os.Stat(inFile); os.IsNotExist(err) {
c.AbortWithStatusJSON(http.StatusBadRequest, "录像文件不存在或已过期")
return
}
ff.H264ToMP4(inFile, outFile)
header := c.Writer.Header()
header["Content-type"] = []string{"application/octet-stream"}
header["Content-Disposition"] = []string{"attachment; filename=" + strings.ReplaceAll(filename, ".ps", ".mp4")}
if !utils.Exist(outFile) {
c.AbortWithStatusJSON(404, "file not found")
return
}
c.File(outFile)
if err := os.Remove(outFile); err != nil {
log.Println(err)
}
if err := os.Remove(inFile); err != nil {
log.Println(err)
}
}
添加过后,设备录像的页面下载正常,并且普通播放器也能够播放录像视频了。
EasyGBS凭借优秀的视频资源接入与处理能力,可实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台既可以作为业务平台直接使用,也能作为视频能力层平台进行调用,并且已经在很多项目场景中落地应用,如:明厨亮灶、智慧工地、雪亮工程、平安乡村等等。感兴趣的用户可以前往演示平台进行体验或部署测试。
标签:ps,err,EasyGBS,GB28181,mp4,outFile,录像,格式,视频 From: https://blog.51cto.com/tsingsee/5751178