目? ? ? ? ?录
二、问题描述:视频画面出现模糊、不断闪烁的绿色的横条纹(或叫闪烁的绿带)
浏览正常的实时视频监控时,视频画面应该具备以下特点:
如下为正常的视频监控画面:
??
浏览实时视频监控图像有时候会出现一些异常的现象,比如常见的有如下:
????????这些现象可能是由于网络问题、设备故障、软件问题或其他原因引起的。
?????? 比如下面的图像都是不正常的:
? ?
?
?????? 但是今天我们碰到了一个奇怪的现象,之所以说奇怪,就是这个现象表现的时好时坏、有的情况一直好、有的情况一直不好。客户处有多个华为的IPC,连接到华为的NVR800上,NVR800通过国标GB28181标准接入到我们的AS-V1000视频监控平台。这个问题表现是:
(1)客户现场,IPC和NVR上面的视频显示正常,客户也发过来视频截图说明了情况;
(2)我们的平台客户端显示的视频画面一直大部分是灰色的、或者是显示横向的闪烁的绿带;
(3)有时候我们承担CS客户端能够正常显示,有时候不能正常显示;web客户端一直不能正常显示。
?????? 具体界面显示如下图示:
?????? 首先我们怀疑是网络原因、或者是我们的AS-V1000视频监控平台有问题,因为网络问题经常会导致卡顿、花屏等现象。因此要按照一定的秩序来分析问题、查出问题:
?????? 这个过程好处理,直接接入一个海康的NVR和IPC到AS-V1000平台,接入平台的方式跟客户现场接入方式相同,通过平台客户端,浏览视频正常。说明AS-V1000视频监控平台功能正常。
?????? 通过我们的CS客户端、web客户端,查看新接入的海康的视频,显示正常。然后把这个视频通过我们的 ?视频接入网关转换为rtsp的流,通过vlc查看,视频正常显示;
?????? 然后把客户现场的视频流也转成rtsp流,通过VLC查看,视频仍然带有绿带、会闪烁。
?????? 这一步证明客户端解码没问题。
?????? 上一步已经基本说明海康设备到视频监控平台的网络没有问题,但是客户现场到视频监控平台之间的网络是否有问题?
?????? 因此,我们在NVR上进行配置,把第一路视频的码率改成1M以下,分辨率设置为720P,但是测试下来,现象依旧,视频仍然带有绿带、会闪烁。
?????? 同时查看NVR的另外2路视频,码率都设置为2M-4M,发现视频都带有绿带、会闪烁,并且没有出现卡顿、花屏的情况。去掉这两路,原来一路视频现象没有任何变化。说明带宽的增加没有影响视频的传输。
?????? 另外,在客户端ping大数据包到视频监控平台的IP地址,基本没有丢包。
?????? 这一步证明网络没有问题。
?????? IPC和NVR在本地显示的视频都是正常的,高清、流畅。因此怀疑只能是一些配置不太匹配,需要做各项配置参数进行修改来做测试。
????????NVR是华为的NVR800,由于对NVR800不是很熟悉,只有更改NVR的各项配置,发现能够更改的只有:分辨率、码率、预定模式、视频质量等参数,因此,分别进行更改,查看视频呈现如何?如下:
(1)分辨率改成比较低的352*288,如图:
(2)码率改成低码率512K(默认为1024K)
(3)码流模式改成子码流(默认为主码流)
(4)视频质量,改成最好、好、最差(默认为好);
(5)改变比特率控制模式,固定码率改成动态码率,如上图。
以上几种方式都改了,都没有解决问题。
打开IPC的配置页面,进入菜单“视频流参数”,出现如下界面:
(1)改变熟悉的编码复杂度、码率类型、智能编码、图像质量、I帧间隔等参数,发现现象依旧;
(2)发现还有个参数“多slice编码”选中了,去掉,现象没有了,图像正常了。
(3)登录到监控平台的CS客户端、web客户端、手机客户端看视频,都正常了。
(4)然后又登录另外一个IPC,发现去掉“多slice编码”选项后,客户端的图像也正常了。
??初步估计是这个参数 “多slice编码” 导致的。
把NVR和IPC的其他参数都恢复以前默认的取值,查看客户端的实时视频,也是正常的。
????????(1)把“多slice编码”选项选中,发现问题又出现
????????(2)再把“多slice编码”选项去掉,问题消失。
因此,确认问题点就是“多slice编码”选项
????????在H.264编码中,多slice编码是一种编码技术,主要用于提高视频压缩效率和稳定性。Slice是指图像中被划分出来的一块区域,每个slice可以独立地进行编码和解码。以下是关于H.264编码中多slice编码的参数和作用:
?如下多slice编码的相关参数:
????????(1)每个slice的编码输出为一个NAL单元。
????????(2)每个slice可以独立地进行预测、变换、量化等操作。
????????(3)每个slice可以有不同的编码参数,如量化参数、运动补偿等。
????????(4)每个slice的编码过程相互独立,可以提高编码并行度,降低编码复杂度。
????????经过公司研发人员分析,我们平台的解码器是支持多slice编码格式,无法正确解析华为的多slice编码的视频流原因,可能是由于解码器的版本过旧,和华为的多slice编码方式不兼容造成的。因此,若需要彻底解决问题,我们需要开发兼容华为这部分编码方式的代码,对我们的解码器软件进行升级。