国标GB28181协议视频平台可以进行设备录像,设备录像文件可以通过接口调用获取(EasyGBS内通过接口调取设备录像的下载文件)。
有用户在下载EasyGBS设备录像之后,发现下载的是ps文件。
由于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)
}
}
转换过后页面下载正常,并且普通播放器也能够播放了。
国标GB28181视频平台
EasyGBS国标视频云服务提供流转发服务,可分发RTSP、RTMP、FLV、HLS多种格式,实现web浏览器、手机浏览器、微信、PC客户端等各种终端无插件播放。
EasyGBS提供用户管理及web可视化页面管理,及录像检索、回放等功能,基于动态组网服务创建智能网络,可按需选择需要组网的网络成员实现点点互联,且对外提供服务器获取状态、信息,控制 HTTP API接口,可自由进行二次开发。