一.效果
二.实现
为了控制视频的显示路数,通常需要做通道切换,这里提供了1通道+4通道+9通道+16通道,其他通道基本上不会用到,因为一般来说,超过9个通道实时显示视频流,建议采用子码流来显示,如果都采用主码流,解码压力大,CPU和内存都吃不消。不过随着CPU、显卡和内存的逐步升级,显示16个通道的实时视频已无压力。
在Qt中,各种通道的切换可以用QGridLayout实现。每路视频封装成一个widget,初始化时,创建32个视频widget,设置每个widget的visible为false,并添加到列表中。然后把列表中index为0的widget添加到QGridLayout,并设置该widget的visible为true。这样的话界面启动后默认显示一路视频。
m_gridLayout=new QGridLayout();
m_gridLayout->setSpacing(2);
for(int i=0;i<MAX_CAMERA_COUNT;i++)
{
VideoWidget *videoWidget=new VideoWidget(this);
connect(videoWidget,&VideoWidget::signalStreamStarted,this,&QHMainWidget::slotStreamStarted);
connect(videoWidget,&VideoWidget::signalStreamClosed,this,&QH
来源:oschina
链接:https://my.oschina.net/u/4280959/blog/4924707