Recording Video from USB Cam with Qt5
c++, qt5
Solution
I'm having almost the same problem, with capturing an image. I discovered that it is only working with the default resolution 640 x 480. If you set the resolution to a higher value it does not work. I've also tried with 2 different cameras with no success, so it seems to be a qt5 problem. You could try to don't set a resolution, then you should be able to record a video, but only with the default resolution of 640 x 480.
Problem
I am trying to record a video acquired from a webcam connect to the usb device. I am workin with Qt5.1.0 in Linux 64 bit. I have the following code: ``` 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(); ``` When I run this code I get the following warning and error ``` CameraBin error: "Internal data flow error." CameraBin error: "Could not negotiate format" ``` And in fact nothing is recorded. If I change the line ``` camera->setCaptureMode(QCamera::CaptureVideo); ``` for ``` camera->setCaptureMode(QCamera::CaptureViewFinder); ``` No error is output, the file is generated, but it only contains one frame (fixed image) If I remove this piece of code: ``` QVideoEncoderSettings settings = recorder->videoSettings(); settings.setResolution(1280,720); settings.setQuality(QMultimedia::VeryHighQuality); settings.setFrameRate(30.0); ``` I get two different errors: ``` CameraBin warning: "A lot of buffers are being dropped." CameraBin error: "Could not encode stream." ``` But the video is actually recorded.