Qt视频播放---基于Windows
程序员文章站
2022-05-22 19:23:00
...
目录
一、回去摄像头信息
在这使用列表来存储摄像头信息
QList类:提供列表的模板类
例子:
QList integerList; //存储整数的列表
QList dateList; //存储QDate的列表
QList<QCameraInfo> camearInfo = QCameraInfo::availableCameras();
二、显示摄像头信息
定义一个下拉列表combox,来存储摄像头信息。
这是foreath的方法:foreach(variable, container)
用于实现Qtforeath循环,变量参数是变量名或变量定义。container参数是Qt容器,其值类型对应于变量的类型。
//方法一
foreach(QCameraInfo cam,camearInfo)
{
qDebug() << "设备名字:" << cam.deviceName();//打印设备名字
qDebug() << "设备描述:" << cam.description();//打印设备描述
ui->comboBox->addItem(cam.deviceName());//在combox上显示获取到的摄像头名字
}
//方法二:也可以使用for循环来遍历
for(int i=0; i<camearInfo.size(); i++)
{
qDebug() << "设备名字:" << camearInfo.at(i).deviceName();
qDebug() << "设备描述:" << camearInfo.at(i).description();
ui->comboBox->addItem(camearInfo.at(i).deviceName());
}
三、开启摄像头
3.1、新建摄像头对象
camera = new QCamera(ui->comboBox->currentText().toUtf8());//选用当前窗口中的设备
3.2、准备一个窗口显示摄像头
QVideoWidget类:用来提供一个小部件,用来显示媒体对象产生的视频对象
QVideoWidget * video =new QVideoWidget(ui->widget);//关联窗口
3.3、设置窗口大小
video->resize(ui->widget->size());
3.4、绑定关联窗口
camera->setViewfinder(video);
3.5、显示窗口
video->show();
3.6、开启摄像头
camera->start();
四、关闭摄像头
camera->stop();
五、结果展示
我定义了俩个按钮,用来开启、关闭摄像头,一个comBox下拉框,用来显示获取到的摄像头设备名字。
如果你的电脑USB端口同时插入多个摄像头设备,在comBox下拉框可以检测到的话,这些摄像头可以随机切换。当然啦,在切换摄像头的时候,需要关闭上一个摄像头然后再开启下一个摄像头,如果不关闭上一个而直接开启下一个的话,会发生资源抢占问题,从而导致程序崩溃而卡死或者退出。因为几个摄像头的优先级是相同的,抢占资源时,优先级不够,但是强制的抢占资源,则会发生意想不到的结果。
上一篇: 双网卡Linux系统配置NAT转发
下一篇: 龙芯平台Qt视频播放程序之性能分析
推荐阅读
-
浅谈基于HTML5的在线视频播放方案
-
QT5:C++实现基于multimedia的音乐播放器(二)
-
Windows Phone 实用开发技巧(21):自动循环播放视频
-
QT5:C++实现基于multimedia的音乐播放器(一)
-
Qt+FFmpeg播放RTSP H264视频流(2)- FFmpeg自定义类封装
-
基于VLC的Unity视频播放器(支持本地视频和rtmp、rtsp等视频流)
-
痞子衡嵌入式:基于恩智浦i.MXRT1060的MP4视频播放器(RT-Mp4Player)设计
-
QT5:C++实现基于Multimedia的音乐播放器(序)
-
利用Windows Media控件实现PPT2003播放多种格式的视频
-
基于vue项目 vue-video-player实现rtmp hls视频流播放