Gstreaming - deux webcams sur TCP

0

J'essaie de diffuser deux webcams sur une seule commande gstreaming. Je peux démarrer une seule caméra avec:

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

L'idée était de démarrer une autre caméra mais sur un chemin différent , il pourrait s'agir d'IP ou de PORT, mais selon les normes, je n'ai essayé que des ports différents:

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.

L'utilisation de la sortie Webm et muxer est requise

Mais je reçois toujours cette erreur: référence inattendue "flux" en ignorant

En suivant ce modèle, j'ai trouvé ici

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.
Bruno Cerk
la source

Réponses:

0

Je vous recommande de lire la syntaxe gst-launch ( https://gstreamer.freedesktop.org/documentation/tools/gst-launch.html ) pour mieux comprendre l'erreur. Vous créez un élément et lui donnez un nom: stream. Ensuite, vous utilisez cette référence dans la description de votre pipeline.

Regardons cette partie:

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

Vous liez un fichier jpegdec à xvimagesink et vous avez ensuite une référence à diffuser directement à cet endroit. Ensuite, vous créez un v4l2src et créez un lien vers un capsfilter. L'élément "stream" que vous venez de référencer au milieu ne fait rien, il n'est lié à personne. Donc, c'est une syntaxe invalide et ça échoue.

Je crois que vous ne voulez pas réellement l’élément tee, vous pouvez donc entièrement le supprimer et ses références. C’est ce qui est utile pour: https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer-plugins/html/gstreamer-plugins-tee.html

De plus, vous pouvez également avoir 2 pipelines distincts, un pour chaque caméra. Le faire sur un ou deux dépend de la façon dont vous voulez gérer et de la nécessité de partager des données liées au pipeline, telles qu'une horloge. Mais cela dépend de votre cas d'utilisation que je ne connais pas bien.

thiagoss
la source
Merci pour votre réponse, le morceau de code que vous avez commenté provient du sujet que j'ai lié, ce n'est pas le mien, je l'ai utilisé comme base pour créer le mien
Bruno Cerk
L’échantillon que vous avez mentionné (le 2e). Contient également l'élément stream.
thiagoss