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

 

猜你喜欢

转载自blog.csdn.net/EasyNTS/article/details/132754341