国标GB28181视频平台EasyGBS设备录像下载文件为ps格式,如何改为MP4格式?
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凭借优秀的视频资源接入与处理能力,可实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台既可以作为业务平台直接使用,也能作为视频能力层平台进行调用,并且已经在很多项目场景中落地应用,如:明厨亮灶、智慧工地、雪亮工程、平安乡村等等。感兴趣的用户可以前往演示平台进行体验或部署测试。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
2021-10-12 新内核EasyGBS存储空间不足如何实现录像文件最大程度消除?
2021-10-12 EasyGBS如何配置播放webrtc协议?