我想录制从网络摄像头获取的视频连接到USB设备。我在Linux 64位Qt5.1.0中工作。使用Qt5从USB摄像头录制视频
我有以下代码:
camera = new QCamera(this);
viewFinder = new QCameraViewfinder(this);
camera->setViewfinder(viewFinder);
recorder = new QMediaRecorder(camera,this);
QVideoEncoderSettings settings = recorder->videoSettings();
settings.setResolution(1280,720);
settings.setQuality(QMultimedia::VeryHighQuality);
settings.setFrameRate(30.0);
recorder->setVideoSettings(settings);
camera->setCaptureMode(QCamera::CaptureVideo);
camera->start();
QString name = filename + QDateTime::currentDateTime().toString("dd.MM.yy-h-m-s");
recorder->setOutputLocation(QUrl::fromLocalFile(outputpath + "/" + name + ".mp4"));
recorder->record();
当我运行这段代码,我得到以下警告和错误
CameraBin error: "Internal data flow error."
CameraBin error: "Could not negotiate format"
而事实上没有被记录下来。
如果更改为
camera->setCaptureMode(QCamera::CaptureViewFinder);
无错误是输出,生成文件,但它仅包含一个帧(固定图像)
如果我行
camera->setCaptureMode(QCamera::CaptureVideo);
除去这一段代码:
QVideoEncoderSettings settings = recorder->videoSettings();
settings.setResolution(1280,720);
settings.setQuality(QMultimedia::VeryHighQuality);
settings.setFrameRate(30.0);
我得到两个不同的错误:
CameraBin warning: "A lot of buffers are being dropped."
CameraBin error: "Could not encode stream."
但实际上录制的视频。
默认分辨率听起来就像是问题是关系到相机的具体型号? –
@MatsPetersson似乎并不是那样的。我尝试过使用三种不同的相机,但我仍然收到相同的错误 – user2582879
消息“无法协商格式”似乎表示相机不支持您要求的格式,因此无论是相机还是格式是要求这是错误的。 –