【问题标题】:Recording Video from USB Cam with Qt5使用 Qt5 从 USB 摄像头录制视频
【发布时间】:2013-07-13 02:37:09
【问题描述】:

我正在尝试录制从连接到 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." 

但视频实际上是录制的。

【问题讨论】:

  • 听起来问题与相机的确切型号有关?
  • @MatsPetersson 似乎并非如此。我尝试了三种不同的相机,但仍然出现相同的错误
  • 消息“无法协商格式”似乎表明相机不支持您要求的格式,所以要么是相机,要么是您要求的格式错误。

标签: c++ qt5


【解决方案1】:

我在拍摄图像时遇到了几乎相同的问题。我发现它仅适用于默认分辨率 640 x 480。如果将分辨率设置为更高的值,它将不起作用。我也尝试了 2 个不同的相机,但都没有成功,所以这似乎是一个 qt5 问题。您可以尝试不设置分辨率,然后您应该可以录制视频,但只能使用默认分辨率 640 x 480。

【讨论】:

  • 谢谢!,删除 setResolution() 工作!虽然我不断收到 CameraBin 错误:**“无法编码流。” ** 虽然实际上它会录制视频
猜你喜欢
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多