国标GB28181视频平台EasyGBS视频流会卡顿吗?网络卡顿情况下能接收视频流吗?

这几天翻了一下以前的博文,发现讲到频率比较多的还是关于视频流的卡顿、延时相关的问题,我已经迫切的感受到了大家对于视频流质量的要求了。

但是我不能否认,视频质量在5G时代,也是有很大发展空间的,像我们开发的支持国标GB28181协议的视频平台EasyGBS,可以说是一个比较完善成熟的视频平台了,但也会遇到视频流卡顿,或者无法播放的问题。

网络是衡量视频流质量高低的一个重要标准,当摄像头网络卡顿时,接收视频流的平台EasyGBS无疑会收到影响,点击播放视频的时候页面请求会一直得不到响应,导致程序误以为系统崩溃卡死。

1229.png

经排查发现,是在网页点击播放之前,会向后端去请求播放地址,后端请求播放地址的时候回去获取视频编码,获取方式是循环的去读取流信息。

 VideoCode := 0

	for {
		tempstream := uas.Server.GetStreamFromRedis(stream.StreamID)
		if tempstream != nil {
			VideoCode = tempstream.VideoCode
		}
		if VideoCode == 0 {
			time.Sleep(time.Second * 1)
			continue
		}
		break
	}

这种做法不好之处就是没有添加超时返回,导致视频一直请求,但又一直得不到响应。

解决方案就是添加指定次数后超时返回,修改代码如下:

VideoCode := 0
	loopcount := 0
	for {
		tempstream := uas.Server.GetStreamFromRedis(stream.StreamID)
		if tempstream != nil {
			VideoCode = tempstream.VideoCode
		}
		if loopcount >= 5 {
			break
		}
		if VideoCode == 0 {
			time.Sleep(time.Second * 1)
			loopcount++
			continue
		}
		break
	}

修改过后,假如摄像头网络不好,超时也会有返回数据,从而让服务器能够取读。

1230.png

猜你喜欢

转载自blog.csdn.net/weixin_43194037/article/details/107908615
今日推荐