国标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接口,可自由进行二次开发。