我想錄制從網絡攝像頭獲取的視頻連接到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
消息「無法協商格式」似乎表示相機不支持您要求的格式,因此無論是相機還是格式是要求這是錯誤的。 –