Я пытаюсь транслировать две веб-камеры с помощью одной команды gstreaming, я могу запустить одну камеру с:

gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! videoscale ! video/x-raw,width=320,height=240  ! vp8enc ! webmmux ! tcpserversink port=8080

Идея состояла в том, чтобы запустить другую камеру, но по другому пути, может быть IP или PORT, но по стандартам я пробовал только другой порт:

gst-launch-1.0 tee name=stream v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480,framerate=12/1 ! vp8enc ! webmmux ! tcpserversink port=8080 stream. v4l2src device=/dev/video2 ! video/x-raw,width=640,height=480,framerate=12/1 ! vp8enc ! webmmux ! tcpserversink port=8081 stream.

Использование вывода webm и muxer требуется

Но я всегда получаю эту ошибку: неожиданное игнорирование "потока"

Следуя этой схеме, я нашел здесь

gst-launch-1.0 tee name=stream v4l2src device=/dev/video0 ! image/jpeg,width=800,height=600,framerate=30/1 ! jpegparse ! jpegdec ! xvimagesink stream. v4l2src device=/dev/video1 ! image/jpeg,width=800,height=600,framerate=30/1 ! jpegparse ! jpegdec ! xvimagesink stream.

1 ответ1

0

Я бы рекомендовал прочитать синтаксис gst-launch (https://gstreamer.freedesktop.org/documentation/tools/gst-launch.html), чтобы лучше понять возникшую там ошибку. Вы создаете элемент и даете ему имя: поток. Затем вы используете эту ссылку в описании вашего конвейера.

Давайте посмотрим на эту часть:

jpegdec ! xvimagesink stream. v4l2src device=/dev/video1 ! image/jpeg,width=800,height=600,framerate=30/1

Вы связываете jpegdec с xvimagesink, а затем у вас есть ссылка на поток прямо здесь. Затем вы создаете v4l2src и ссылаетесь на capsfilter. Элемент "поток", на который вы только что ссылались в середине, ничего не делает, не сидит там, ни с кем не связан. Так что это неверный синтаксис, и он терпит неудачу.

Я полагаю, что вы на самом деле не хотите использовать элемент tee, поэтому вы можете полностью удалить его и его ссылки. Вот для чего это полезно: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/gstreamer-plugins-tee.html.

Кроме того, вы также можете иметь 2 отдельных конвейера, по одному для каждой камеры. Выполнение одного или двух зависит от того, как вы хотите управлять, и нужно ли им обмениваться данными, относящимися к конвейеру, такими как часы. Но это зависит от вашего варианта использования, который я не знаю глубоко.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .