前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >国标GB28181协议视频平台EasyGBS如何实现CDN推流分发?

国标GB28181协议视频平台EasyGBS如何实现CDN推流分发?

原创
作者头像
TSINGSEE青犀视频
修改2021-02-24 17:52:55
7100
修改2021-02-24 17:52:55
举报
文章被收录于专栏:TSINGSEE青犀视频TSINGSEE青犀视频

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

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

后端添加代码如下:

代码语言:javascript
复制
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地址,前端在播放的视频流传递过来,然后后端播放时将流数据转推到该地址。

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

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
实时音视频
实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档