EasyCVR平台接入海康Ehome未携带ssrc导致视频无法播放的解决办法
作者:互联网
EasyCVR视频融合云服务平台支持的协议类型与设备类型非常丰富,它能够兼容国标GB28181、RTSP/Onvif、海康SDK、Ehome、大华SDK等协议的前端设备。其中,Ehome协议是海康的私有协议,相对于GB28181国标协议,都是基于设备端主动向平台注册,更适用于无固定IP地址的设备,只需要配置一下设备注册地址即可云端使用。
近期我们接到反馈,EasyCVR平台在接入Ehome上级,出现了无法播放的情况。今天我们来和大家分享一下排查过程和解决办法。
在排查中抓包分析,发现无法播放的原因,是下级在回复上级播放消息时,未携带ssrc描述字段,导致上级流无法区分,所以造成了视频无法播放。
添加如下代码,在封装RTP流时,添加ssrc描述字段即可解决问题。
func (obj *SinkUDP) SendAVFrame(avframe *AVFrame, codec int, pts int) (err error) { cframe := &C.EASY_AV_Frame{ u32AVFrameFlag: C.uint(avframe.Flag), u32AVFrameLen: C.uint(avframe.Len), u32VFrameType: C.uint(avframe.Type), pBuffer: (*C.uchar)(unsafe.Pointer(avframe.Buffer)), u32TimestampSec: C.uint(avframe.TimeSec), u32TimestampUsec: C.uint(avframe.TimeUsec), } obj.rtpInfo.SSRC = obj.SSRC return obj.SendRTMP(cframe, codec, pts) }
修改后我们再次测试播放,已经恢复正常了。
EasyCVR支持将所有视频通道通过GB28181协议级联到上级国标平台上,且支持同一通道级联到多个上级平台,十分的灵活。目前平台也正在积极拓展AI智能分析功能,如人脸识别、车牌识别等,欢迎大家的关注。
标签:ssrc,obj,Ehome,EasyCVR,播放,uint,avframe 来源: https://www.cnblogs.com/easycvr/p/15893586.html