All 4 USB cameras appear to be the same camera to GStreamer.

iotsystek iotsystek at gmail.com
Wed Feb 10 17:35:39 UTC 2021


PROBLEM:
I am currently working on a LattePanda Delta with Windows 10.  Using a
command prompt window I can show any of the 4 cameras one at a time using
the following commands.
gst-launch-1.0 ksvideosrc device-index=0 name=Cam0 ! queue ! videoconvert !
videorate ! autovideosink sync=false
gst-launch-1.0 ksvideosrc device-index=1 name=Cam1 ! queue ! videoconvert !
videorate ! autovideosink sync=false
gst-launch-1.0 ksvideosrc device-index=2 name=Cam2 ! queue ! videoconvert !
videorate ! autovideosink sync=false
gst-launch-1.0 ksvideosrc device-index=3 name=Cam3 ! queue ! videoconvert !
videorate ! autovideosink sync=false

If I attempt to use 2 or more cameras at the same time by starting each
gst-launch-1.0 command in separate command windows or attempting to use
videomixer and videobox in any configuration.  I get an error:
ERROR: from element /GstPipeline:pipeline0/GstKsVideoSrc:Cam1: failed to
start capture (device already in use)

I have tried using all kinds of [device-path], [device-index] variations,
all with the same results.

What am I missing?
How do I get GStreamer to use all 4 cameras at the same time?
Does anyone have a working multiple USB camera configuration that they could
share or compare what I attempting to do with what they have that works.
Is there something besides GStreamer that can do this?

At this point I am open to any hardware/software solution.
Thanks in advance for any assistance.
Jim

BACKGROUND:
I have been trying to get 4 USB Cameras to display in a single window.  I
started with a Raspberry Pi 4 ARM CPU and had a lot of issues that seemed to
suggest that the Pi was not up to the task, although I never saw anything
that would suggest that in the task manager (~ 15% CPU and under 100K
memory).  So to be sure I purchased a LattePanda Delta 4GB RAM Intel CPU
based SBC to test further.  With Linux on the Panda I pretty much had the
same problems and results as I did with the Pi so I installed Windows 10 on
the Panda.

Here is a quick overview of what I am trying to accomplish.  I currently
have a Raspberry Pi 4 in the cab of my 2001 diesel truck.  It is used for
several gauges, controls the aftermarket exhaust brake, trailer brakes and
provides GPS.  I tow a 5-wheel trailer and want to add traffic cameras to
it.

I have a cat5 wired connection between the trailer and the cab already.  I
want to set this up so that at the push of a touch screen button in the cab
I can select different pre-configured camera sereams based on traffic
conditions and possible upcoming lane changes.  

I would like the computer in the trailed to input the camera video arrange
it into one of several single window configurations and stream that
consolidated video to the cab computer.

I am using videomixer and videobox to combine the video streams.

As an example this GStreamer command works in all SBC and OS cases (RPi4,
Panda, Linux, Windows).  If I can get this to work using the USB cameras as
inputs I will stream this output to the cab of the truck via UDP.
gst-launch-1.0 videomixer name=mix ! videoconvert ! autovideosink sync=false
^
 videotestsrc pattern=0 ! video/x-raw,format=AYUV,width=640,height=480 !
videobox top=0 border-alpha=0 ! mix. ^
 videotestsrc pattern=4 ! video/x-raw,format=AYUV,width=640,height=480 !
videobox left=-640 border-alpha=0 ! mix. ^
 videotestsrc pattern=5 ! video/x-raw,format=AYUV,width=640,height=480 !
videobox top=-480 border-alpha=0 ! mix. ^
 videotestsrc pattern=6 ! video/x-raw,format=AYUV,width=640,height=480 !
videobox left=-640 top=-480 border-alpha=0 ! mix.

ADDITIONAL INFO:
3 of the cameras are ELP-USB100W05MT-DL36
1 of the cameras is a ELP-USB100W07M-MHV45

There is no audio needed or wanted in this project.  Also a low frame rate
of 5 to 10 fps should be very acceptable.

I have attached a txt file that shows the video sources output from the
following command:
	gst-device-monitor-1.0 Video/Source
USB_Cameras_on_Latte_Panda_with_Win_10.txt
<http://gstreamer-devel.966125.n4.nabble.com/file/t379857/USB_Cameras_on_Latte_Panda_with_Win_10.txt>   

In a nutshell this is what I get:
There are 2 entries for each camera with each entry using a different video
source plugin (ksvideosrc or mfvideosrc).

I have tried these in different combinations, all resulting in the same
(device already in use) error.

ksvideosrc
device-path="\\\\\?\\usb\#vid_32e4\&pid_9601\&mi_00\#8\&1e2f342a\&0\&0000\#\{6994ad05-93ef-11d0-a3cc-00a0c9223196\}\\global"
mfvideosrc
device-path="\\\\\?\\usb\#vid_32e4\&pid_9601\&mi_00\#8\&1e2f342a\&0\&0000\#\{e5323777-f976-4f5b-9b55-b94699c46e44\}\\global"

ksvideosrc
device-path="\\\\\?\\usb\#vid_05a3\&pid_9310\&mi_00\#7\&2602478e\&0\&0000\#\{6994ad05-93ef-11d0-a3cc-00a0c9223196\}\\global"
mfvideosrc
device-path="\\\\\?\\usb\#vid_05a3\&pid_9310\&mi_00\#7\&2602478e\&0\&0000\#\{e5323777-f976-4f5b-9b55-b94699c46e44\}\\global"

ksvideosrc
device-path="\\\\\?\\usb\#vid_05a3\&pid_9310\&mi_00\#8\&ff2f27\&0\&0000\#\{6994ad05-93ef-11d0-a3cc-00a0c9223196\}\\global"
mfvideosrc
device-path="\\\\\?\\usb\#vid_05a3\&pid_9310\&mi_00\#8\&ff2f27\&0\&0000\#\{e5323777-f976-4f5b-9b55-b94699c46e44\}\\global"

ksvideosrc
device-path="\\\\\?\\usb\#vid_05a3\&pid_9310\&mi_00\#7\&134896e9\&0\&0000\#\{6994ad05-93ef-11d0-a3cc-00a0c9223196\}\\global"
mfvideosrc
device-path="\\\\\?\\usb\#vid_05a3\&pid_9310\&mi_00\#7\&134896e9\&0\&0000\#\{e5323777-f976-4f5b-9b55-b94699c46e44\}\\global"







--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/


More information about the gstreamer-devel mailing list