国标GB28181视频平台EasyGBS设备录像下载文件为ps格式,如何改为MP4格式?

109 篇文章 1 订阅
60 篇文章 0 订阅

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凭借优秀的视频资源接入与处理能力,可实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台既可以作为业务平台直接使用,也能作为视频能力层平台进行调用,并且已经在很多项目场景中落地应用,如:明厨亮灶、智慧工地、雪亮工程、平安乡村等等。感兴趣的用户可以前往演示平台进行体验或部署测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值