我正在尝试录制一段通过USB设备连接的网络摄像头获取的视频。我使用的是Linux 64位下的Qt5.1.0。
以下是我的代码:
当我运行这段代码时,我会得到以下警告和错误。
没有错误输出,文件已生成,但是只包含一个帧(固定图像)。
如果我删除这段代码:
我收到了两种不同的错误信息:
但实际上,该视频已被录制。
以下是我的代码:
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::CaptureVideo);
for
camera->setCaptureMode(QCamera::CaptureViewFinder);
没有错误输出,文件已生成,但是只包含一个帧(固定图像)。
如果我删除这段代码:
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."
但实际上,该视频已被录制。