EasyGBS是基于GB28181协议的视频平台,拥有视频直播、录像、存储、检索与回放、云台控制、告警上报、语音对讲、平台级联等功能。我们在此前的文章中分享过关于EasyGBS如何实现标准设备录像的倍速功能,感兴趣的用户可以翻阅往期的文章进行了解。

EasyGBS倍数播放录像视频时出现崩溃是什么原因?该如何解决?_空指针

我们在项目现场发现,EasyGBS在录像回放倍数播放时,点击下方播放倍数,平台出现了崩溃现象,并出现报错:“panic: runtime error: invalid memory address or nil pointer dereference”,这段报错表示一个空指针。

EasyGBS倍数播放录像视频时出现崩溃是什么原因?该如何解决?_空指针_02

EasyGBS倍数播放录像视频时出现崩溃是什么原因?该如何解决?_空指针_03

针对该情况,我们立即进行了排查。

1)找到EasyGBS对应的代码,如下:

EasyGBS倍数播放录像视频时出现崩溃是什么原因?该如何解决?_级联_04

2)只有Server没有初始化,即表示为空指针,因此导致程序崩溃。

3)进一步分析得知,此错误代表的是下级客户端,不需要sip的服务,所以此处肯定是nil。

4)找到错误码中的“handle_info.go”的57行,将其注释掉。

EasyGBS倍数播放录像视频时出现崩溃是什么原因?该如何解决?_客户端_05

5)但是注释掉会出现设置成功没有回复sip消息,所以还需要在回放倍数加上sip消息的回复。

6)注释下级客户端的回放控制代码,如图:

EasyGBS倍数播放录像视频时出现崩溃是什么原因?该如何解决?_空指针_06

7)加上sip消息的回复,添加回放倍数的控制,如图:

EasyGBS倍数播放录像视频时出现崩溃是什么原因?该如何解决?_客户端_07

8)按上述步骤修改后,成功解决倍数播放的崩溃问题。

EasyGBS倍数播放录像视频时出现崩溃是什么原因?该如何解决?_级联_08

EasyGBS平台可提供流媒体接入、处理、转发等服务,支持内网、公网的监控设备通过国标GB/T28181协议进行视频监控直播,还能实现录像、检索与回看、语音对讲、云台控制、平台级联等视频能力。除了提供API接口供用户调用、集成与二次开发,EasyGBS还能提供个性化定制,以满足用户的多样化功能需求。感兴趣的用户可以前往演示平台进行体验与部署测试。