Bonjour,
Pour le cadre général : je travaille sur un produit (fonctionnant sous Linux) qui fait de la reconnaissance vidéo (basée sur openCV
). Il utilise en temps normal une webcam, et pour des tests automatisés, je voudrais envoyer des vidéos de tests, que le produit verrait à travers une fausse webcam via le module v4l2loopback
.
J'arrive à faire fonctionner v4l2loopback via un stream de test. Ceci fonctionne :
gst-launch-1.0 -v videotestsrc pattern=ball ! v4l2sink device=/dev/video0
Je force les dimensions et le format du stream, ceci fonctionne toujours (je me prépare pour la suite) :
gst-launch-1.0 -v videotestsrc pattern=ball ! decodebin ! videoconvert ! videoscale ! "video/x-raw,format=YUY2,width=320,height=240" ! v4l2sink device=/dev/video0
Maintenant je voudrais envoyer une video de test, et là je galère. Je change simplement la source avec un fichier :
gst-launch-1.0 -v filesrc location=test.avi ! avidemux ! decodebin ! videoconvert ! videoscale ! "video/x-raw,format=YUY2,width=320,height=240" ! v4l2sink device=/dev/video0
J'obtiens l'erreur suivante :
ERREUR : de l’élément /GstPipeline:pipeline0/GstAviDemux:avidemux0 : Internal data stream error.
Information de débogage supplémentaire :
../gst-plugins-good/gst/avi/gstavidemux.c(5780): gst_avi_demux_loop (): /GstPipeline:pipeline0/GstAviDemux:avidemux0:
streaming stopped, reason not-negotiated (-4)
ERREUR : le pipeline refuse de passer en phase de préparation.
Définition du pipeline à NULL…
Libération du pipeline…
Pourtant le pipeline a l'air correct, car si je modifie juste le sink final pour un simple affichage, ça marche :
gst-launch-1.0 -v filesrc location=test.avi ! avidemux ! decodebin ! videoconvert ! videoscale ! "video/x-raw,format=YUY2,width=320,height=240" ! autovideosink
Quelque-chose de curieux tout de même avec cette dernière commande, le message qui arrive régulièrement dans la console :
BALISE TROUVÉE : découverte par l’élément « autovideosink0-actual-sink-xvimage ».
codec vidéo: MPEG-4 Video (Simple Profile)
débit: 2499979
débit minimum: 188544
débit maximum: 7636416
… comme si le decodebin
ne servait à rien, ce qui expliquerait alors que le flux ne peut pas aller dans v4l2loopback.
Une idée ?
Merci !
# avidemux
Posté par gUI (Mastodon) . Évalué à 4.
Bon, sans trop avoir compris pourquoi, il semble que
avidemux
ne sert à rien en fait.Ceci fonctionne :
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: avidemux
Posté par gUI (Mastodon) . Évalué à 2.
Je rajoute : selon les vidéos de test, il vaut mieux aussi rajouter
videorate
. En effet,v4l2loopback
n'accepte que des framerate entiers, et parfois la source a un framerate fractionnaire.En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.