Qt的QMediareCorder不起作用 - 无法从网络摄像头录制
-
22-12-2019 - |
题
我一直在寻找解决这个问题的解决方案,我在这里看到了一些关于这个问题的线程,但没有解决方案。
我正在尝试从我的计算机上的两个不同的网络摄像头录制视频。我能为他们两个显示视频,但问题是录制。当我尝试时,没有任何反应。没有保存文件,并且状态也永远不会改变。我已经附上了加载摄像机的代码和加载QMediereCorders的代码。我也试过只有一个相机,它仍然不起作用。 Qt示例“摄像机”也不起作用,始终禁用录制选项。
void MainWindow::setCamera() {
foreach (const QCameraInfo &cameraInfo, QCameraInfo::availableCameras()) {
qDebug() << "Device Name: " + cameraInfo.deviceName();
qDebug() << "Device Description: " + cameraInfo.description();
if (cameraInfo.description() == "Integrated Camera")
camera1 = new QCamera(cameraInfo);
else if(cameraInfo.description() == "QuickCam for Notebooks Pro")
camera2 = new QCamera(cameraInfo);
}
camera1->setViewfinder(ui->camScreen1);
camera2->setViewfinder(ui->camScreen2);
camera1->setCaptureMode(QCamera::CaptureVideo);
camera2->setCaptureMode(QCamera::CaptureVideo);
camera1->start();
camera2->start();
qDebug() << camera1->status();
qDebug() << camera1->state();
qDebug() << camera1->error();
}
void MainWindow::setVideoEncoding() {
recorder1 = new QMediaRecorder(camera1);
recorder2 = new QMediaRecorder(camera2);
QVideoEncoderSettings settings = recorder1->videoSettings();
settings.setCodec("video/mpeg2");
settings.setQuality(QMultimedia::LowQuality);
settings.setResolution(640,480);
settings.setFrameRate(30.0);
recorder1->setVideoSettings(settings);
recorder2->setVideoSettings(settings);
recorder1->setMetaData(QMediaMetaData::Title, QVariant(QLatin1String("Record1")));
recorder2->setMetaData(QMediaMetaData::Title, QVariant(QLatin1String("Record2")));
recorder1->setOutputLocation(QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + "/" + "testvide1o.mp4"));
recorder2->setOutputLocation(QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + "/" + "testvideo2.mp4"));
qDebug() << recorder1->status();
qDebug() << recorder1->state();
qDebug() << recorder1->error();
}
.
当我按下记录按钮:
void MainWindow::toggleRecord(bool startRecord) {
if(startRecord) {
recorder1->record();
recorder2->record();
}
else {
recorder1->stop();
recorder2->stop();
}
qDebug() << recorder1->state();
qDebug() << recorder1->status();
qDebug() << recorder1->error();
qDebug() << recorder2->state();
qDebug() << recorder2->status();
qDebug() << recorder2->error();
}
.
状态,状态和错误如下(每次调用它们)
相机:
状态:QCamera::UnavailableStatus;
.
状态:QCamera::ActiveState;
.
错误:QCamera::NoError.
录音机:
状态:QMediaRecorder::UnavailableStatus;
.
状态:QMediaRecorder::StoppedState;
.
错误:QMediaRecorder::NoError.
提前感谢您的时间。
解决方案
似乎问题是录音仍然没有为Windows工作,如
我在Mac A上测试了它,它的工作正常。要在Windows上修复此我使用 qtmel library 。
不隶属于 StackOverflow