[英]Recording Video from USB Cam with Qt5
我正在尝试录制从连接到 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);
对于
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."
但视频实际上是录制的。
我在捕获图像时遇到了几乎相同的问题。 我发现它仅适用于默认分辨率 640 x 480。如果将分辨率设置为更高的值,则它不起作用。 我也尝试过使用 2 个不同的相机但没有成功,所以这似乎是一个 qt5 问题。 您可以尝试不设置分辨率,然后您应该可以录制视频,但只能使用默认分辨率 640 x 480。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.