在监控领域中,一般输出设备的图形用户界面内容包括:
1、后端OSD:显示画面分割线、通道号、时间等信息,用以界定多画面显示布局。
2、GUI界面:包括各种菜单、进度条等元素,用户通过操作GUI界面进行设备配置
3、鼠标:提供更方便易用的界面菜单操作方式。
以上3类图形内容可以通过1个图形层实现,也可以通过多个图形层实现。
在实际的项目中,我们一般采用的是在一个图层实现
实现过程中比较重要的是注意以下两点:
1、QT不负责视频解码,也就是不要采用软件解码,而是采用芯片的硬件解码功能,如下图所示
该技术要点是建立在充分发挥芯片硬件功能,减少QT使用率,从而降低了CPU的负担,只需要主要的是边框和视频的相对位置即可
2、GUI层和视频层的相对关系设置
一般情况下视频层的优先级是最低的,也就是说OSD层会放置在视频层上面,因此,我们在运行Qt程序的时候就会把视频层给覆盖掉了,但是这并不是我们想要的效果,我们希望的是在视频层上能够显示除了显示一些必要的控件外都显示视频图像。在QT里面只需要做两个步骤即可,如下所示
具体原理,就是设置alpha的值,进行全透明
QWSServer::setBackground(QColor(0, 0, 0, 0)); //QT服务器窗口全透明
label->setStyleSheet("background-color:transparent;"); //控件透明为背景色
设置完成以上两个步骤后,就可以在上图的紫色方框内看到视频图像了
最后,可以通过设置芯片输出的视频的大小来迎合GUI视频窗口大小即可