前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyGBS对接宇视使用TCP传输崩溃该如何解决?

EasyGBS对接宇视使用TCP传输崩溃该如何解决?

原创
作者头像
TSINGSEE青犀视频
发布2022-07-14 17:54:15
3040
发布2022-07-14 17:54:15
举报
文章被收录于专栏:TSINGSEE青犀视频TSINGSEE青犀视频

国标视频云服务平台EasyGBS可支持通过国标GB28181协议接入多路视频源设备,实现视频流的接入、转码、处理与分发等功能,对外输出的视频流格式包括RTSP、RTMP、FLV、HLS、WebRTC等。平台视频能力丰富灵活,包括监控直播、视频分发、录像、回看与检索、云存储、语音对讲、告警上报、云台控制、平台级联等,可应用在多种场景中,如明厨亮灶、平安乡村、雪亮工程、智慧工地等。

有用户反馈,在现场EasyGBS对接宇视设备时,下级平台往上级平台推流,上级EasyGBS进行播放会出现崩溃现象。部分错误码如下:

“runtime: unexpected return pc for gitee.com/easydarwin/EasyGBSGo/global.LoadTop.func1 called from 0xc001ac6000”

为提高用户体验,优化平台功能,技术人员立即开展分析排查。

从上述错误码中分析得出是GO运行时报错。调试如下代码注释,程序运行几天未出现崩溃现象。-

此代码是发送tcp和udp流给上级播放,所以再进行拆分查看哪个会出现崩溃。最后测试发现,是tcp播放会出现崩溃现象,而udp播放未出现崩溃现象。

由此推算是tcp的缓存问题。在使用go的bufio.ReadWriter作为缓存发送tcp数据,再运行一会还是会出现崩溃现象。

最终不使用go的tcp库发送数据,而是直接改成C的方式发送,并在go中使用cgo,这样即可解决崩溃问题。

解决方法如下:

使用C的方式发送tcp数据,在go中使用。参考代码如下:

  • 建立tcp连接:
  • 发送tcp数据:
  • 关闭tcp连接:

EasyGBS平台部署轻快、可拓展性强,我们也提供了丰富的API接口与SDK服务,用户可根据自己的需求自由调用、二次开发与集成,能轻松搭建安防视频监控平台。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档