I am having a very odd problem with two USB cameras. One is an Aukey PC-W3 webcam, the other is an ELP IMX322 USB camera.
The Aukey hangs when trying to open it at a resolution of 1080p in gst. The ELP IMX322 gives an actual error when trying to open the preview resolution above 800x600:
ERROR on bus: by /GstPipeline:capture_native_pipeline/GstBin:cap_bin/GstV4l2Src:v4l2src1: Internal data stream error. debug info: gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:capture_native_pipeline/GstBin:cap_bin/GstV4l2Src:v4l2src1: streaming stopped, reason not-negotiated (-4)
I figured it was an issue with the camera’s support for Linux or something, as Windows has no issues running both cameras at 1080p. I decided to debug with V4L2. Both cameras properly support 1080p.
Here’s the v4l2-ctl output of --list-formats-ext on the IMX322: (env) user@user-desktop:~/face/facial_analysis_python$ v4l2-ctl -d /dev/video0 - - Pastebin.com
Running VLC with v4l2 arguments I can open both cameras at 1080p without issue:
However, gstreamer errors out on the same cameras. I’ve tried a variety of arguments, encodings, etc but nothing is getting past this error. I’ve tried different encoding profiles (baseline, high), different color formats, but every time I get the same error. Only one camera is plugged in or used at once and they’re directly connected to the Jetson via USB so it shouldn’t be a USB bus or power issue.
What confuses me is gst seems to use v4l2 as a backend, so I can’t tell why VLC can open the v4l2 device but gst cannot.
This is the command I’m using
nvgstcapture-1.0 --cap-dev-node=0 --prev-res=4