国标GB28181协议视频平台EasyGBS视频通道添加CDN推流分发功能开发

在直播系统中加入CDN,是传输内容尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输速度更快、更稳定。因此TSINGSEE青犀视频为了提高国标协议下视频传输的质量,在国标GB28181协议视频平台EasyGBS通道添加了CDN功能。

GBS1.png

EasyGBS通道添加CDN功能的具体表现就是在每个设备播放的时候传入CDN地址,然后程序收流的时候会将流数据转推到这个地址。

后端添加代码如下:

defer func() {
       if p := recover(); p != nil {
              c.AbortWithStatusJSON(400, fmt.Sprintf("%v", p))
              return
       }
}()
type Form struct {
       Serial string `form:"serial" binding:"required"`
       Code   string `form:"code" binding:"required"`
       Cdn    string `form:"cdn"`
}

var form = Form{}
if err := c.Bind(&form); err != nil {
       return
}

device := models.GetDevice(form.Serial)
if device == nil {
       c.AbortWithStatusJSON(400, fmt.Sprintf("device[%s] not found", form.Serial))
       return
}
channelInfo := models.GetChannel(form.Code, form.Serial)
if channelInfo == nil {
       c.AbortWithStatusJSON(400, fmt.Sprintf("channel[%s] not found", form.Code))
       return
}
db.SQLite.Model(models.Channel{}).Where("id = ? and device_id=?", form.Code, form.Serial).Update("cdn", form.Cdn)

首先查询数据库是否有这个设备,再根据传入的参数code查询数据库在这个设备下是否有这个通道。然后修改这个通道的CDN地址,前端在播放的视频流传递过来,然后后端播放时将流数据转推到该地址。

54.png

下面我们测试一下,当在EasyGBS播放的时候,播放界面如下:

55.png

同时播放这个RTMP的推流cCDN地址,也可以正常播放,功能实现正常。

56.png

TSINGSEE青犀视频开发的多种视频平台中,有支持国标GB28181协议的EasyGBS,有支持RTSP协议的EasyNVR,有支持RTMP协议的EasyDSS,当然也有兼容目前市面上大部分常见协议的EasyCVR平台。经过不断优化和调试,TSINGSEE青犀视频的平台已经在多个项目领域实践落地,如果大家有需求,欢迎联系我们获取测试账号进行实际部署测试,更多视频相关解决方案,欢迎访问TSINGSEE青犀视频官网。

云边端.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值