Qt5 on Ubuntu 22.04 Logi C270 USB Camera Viewfinder Issues
-
I'm having trouble getting my Qt5 code to show my Logi 22.04 USB Camera viewfinder on Ubuntu 22.04 OS Linux Workstation.
Qt5 finds the camera, turns the camera on, but it never shows the viewfinder, and it returns the below error.Camera-related Qt5 code:
QCamera *camera;
QCameraViewfinder *viewfinder;
QCameraImageCapture *imageCapture;
const QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
for (const QCameraInfo &cameraInfo : cameras) {
if (cameraInfo.deviceName() == "/dev/video6")
{
camera = new QCamera(cameraInfo);
qDebug() << cameraInfo.description();
break;
}
}
viewfinder = new QCameraViewfinder(ui->widget);
imageCapture = new QCameraImageCapture(camera);
camera->setViewfinder(viewfinder);
camera->setCaptureMode(QCamera::CaptureStillImage);
viewfinder->show();
camera->start();Error:
Camerabin error: "Internal error: could not render surface"
Camerabin error: "Internal data stream error." -
Hi and welcome to devnet,
Does dmesg tell you anything related to that ?
Can GStreamer properly manage that device ? -
Hi and welcome to devnet,
Does dmesg tell you anything related to that ?
Can GStreamer properly manage that device ?@SGaist What dmesg or gstreamer command should I run if my usb camera is on /dev/video4.
I'm guessing I am missing a ubuntu 22.04 QT5 library or I have the wrong version of a library.
My usb camera works with cheese and guvcview. -
dmesgdoes not require any parameters.For GStreamer, just start the camera and show its output.
-
GL Streamer showed my camera's viewfinder just fine. (execution below).
Cheese and Guvcview also show my camera's viewfinder just fine.Linux OS Version : ubuntu 22.04.3
GL Streamer Version: GStreamer 1.20.1
Qt Version: 5.15.3Command:
gst-launch-1.0 v4l2src device=/dev/video4 ! videoconvert ! autovideosinkOutput:
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Got context from element 'autovideosink0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"(GstGLDisplayX11)\ gldisplayx11-0";
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency... -
Are you using the Qt version that comes with your system ?
In any case, you can also create a custom GStreamer pipeline with QMediaPlayer.