解决Hi3531平台NVR切换黑屏问题

NVR中有两个概念:主码流和次码流。

主码流用于本地存储,子码流适用于图像在低带宽网络上传输。

主码流与子码流是海康威视首家提出了这样的概念,是为了解决在网络情况不好时为了满足远程预览的流畅性降低码率,而不影响本地录像提出的双码流技术,即一路视频进入DVR后,DVR可以编码提供两种码流,主码流和子码流,主码流分辨率高于子码流,主码流用来录像,子码流用来网传,默认客户端访问采用主码流客户可以根据网络情况选择子码流访问,这样做的目的是当我用子码流预览时如果网络状况不是很好,可以降低子码流的位率(随着位率的降低画质会有降低),以达到改善网络浏览的流畅性,而又不改变本地录像的录像效果

次码流传输的过程中也并非是将网络摄像机的实时图像帧全部传输过来,而是通过关键帧(或主帧)和次帧的方式传输。如果把关键帧理解为一副实时图像的话,那么次帧就好比为前一时刻的实时图像和当前时刻的实时图像差值编码形成的次帧,这样在解码时通过前面一个关键帧和当前时刻的次帧合成就会形成当前时刻的实时画面。如果没有关键帧,次帧会由于没有关键帧而无法解码,造成在关键帧到来之前没有图像及黑屏的现象。如果两个关键帧之间的间隔比较小,这样可能人的体验不会有影响。如果网络摄像机数量比较多时,减小关键帧间隔会增加网络带宽,加重网络负担,导致网络拥塞,使得画面流畅性出现问题。

我们的Hi3531的NVR多路小画面切换到大画面时,因为主通道支持请求关键帧的函数,故多路小画面例如16cif切换到大画面时可以解决切换没有黑屏的问题。对于某些ipcrame摄像头的次通道也支持请求关键帧的函数,但是某些型号就不支持这个功能,于是会出现大画面切换到多路小画面时会出现很长时间没有画面及黑屏的现象。于是我们提出来一个主要是针对用户体验感的解决方案:

我们的方案是使用PIP模式:当我们从多路小画面切换到大会面时,我们将要切换到大画面的通道在PIP层显示,不影响原视频层画面。这个时候由于所有通道的Vdevc通道被Destroy掉了,也和Vpss解除了绑定关系,重新把要显示的大画面的Vdec通道和Vpss绑定起来,使得这个时候的原视频层画面停留在了切换到大画面之前的那一刻状态。当画面从大画面切换回多路小画面时,由于前面原视频层画面的停留,就不会出现黑屏的现象,在关键帧到来时多路小画面就会恢复实时的画面。

当时我们切换回来时,原来大画面的通道对应的小画面通道还是会出现黑屏的现象。我们分析原因,认为对于VO通道的存储空间,原视频层和PIP层是共用的,所以从同一个通道小画面切换到大画面时,输出属性变化了,而且原先的图像也被大画面给覆盖了,在切换回来时就会出现黑屏的现象。这个问题怎么解决呢?我的方案是先把要切换的小画面帧保存起来,切换回来时在把它送回去,这样问题就解决了。


后话,上面这种切换的算法不要采纳,落后了。

你可能感兴趣的:(pip,黑屏,关键帧,Hi3531,NVR)