国标GB28181协议国标流媒体平台EasyGBS设备录像下载为PS文件如何转换成MP4文件?
国标GB28181协议视频平台可以进行设备录像,设备录像文件可以通过接口调用获取(EasyGBS内通过接口调取设备录像的下载文件)。
有用户在下载EasyGBS设备录像之后,发现下载的是ps文件。
由于ps文件的特殊性,很多播放器都不支持,所以需要将ps文件转换成mp4文件。
我们可以添加如下代码,利用ffmpeg将ps转换为mp4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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接口,可自由进行二次开发。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结