EasyCVR视频平台的协议兼容性很强,支持目前现有的大部分协议接入,比如GB28181协议及Ehome协议。同时EasyCVR具备两种录像方式,分别为云端录像和设备录像,录像均可通过调用播放。但是在EasyCVR通过GB28181协议播放设备录像时会出现播放一段时间后无法播放的问题。
通过抓包数据,能够看到EasyCVR平台在不停地朝设备发送起播invite消息。
在查看页面接口调用此刻页面在不停的调用播放接口:
于是排查接口代码,发现接口中只有调用播放接口,但是在第一次播放过后,后续应该需要调用的是保活,添加如下代码,判定当页面请求播放接口,此时有流时改为调用保活接口。
代码语言:javascript复制sTime, err := time.ParseInLocation("20060102150405", stime, time.Local)
eTime, err := time.ParseInLocation("20060102150405", etime, time.Local)
var stream *sip.Stream
if url != "" {
urlarr := strings.Split(url, "_")
if len(urlarr) >= 2 {
namearr := strings.Split(urlarr[1], ".")
streamurl := fmt.Sprintf("playback:%s:%s:%s", sipDev.DeviceID, gbchannels[0].ToSIPChannel().DeviceID, namearr[0])
stream, err = uas.Server.TouchStream(streamurl)
}
}
再次抓包排查,播放消息发送正常,视频录像播放也恢复正常。
由TSINGSEE青犀视频打造的EasyCVR安防视频云服务不但能支持标准协议(RTSP、RTMP、Onvif、GB28181等协议)和厂家私有协议(海康SDK、Ehome协议)的接入,也能兼容市面上绝大多数的安防设备,已经可以作为智慧城市建设的有力支撑,欢迎大家了解。