2016-07-15 2 views
0

J'essaie de composter trois flux provenant de trois Rapsberry PI.Videomixer Gstreamer Framerate très bas

Dès que je me joins à deux courants ensemble en utilisant le plugin videomixer, je reçois un message se terminant par:

Pipeline: pipeline0/GstOSXVideoSink: osxvideosink0: Il peut y avoir un problème de timestamping, ou cet ordinateur est trop lent.

Étrangement, mon moniteur de tâches indique que 15% l'utilisation du processeur pour gst

Avec les trois cours d'eau, le framerate devient inutilisable. Je m'attendrais à ce que mon macbook I7 soit capable de gérer cela sans problème ....

Voici le code que j'utilise pour le mixage, dans ce cas un seul flux (/ sink?). Quelqu'un peut-il me dire s'il y a une erreur évidente? Ou où je devrais chercher le goulot d'étranglement et l'améliorer? Merci!

gst-launch-1.0 videomixer name=m sink_1::xpos=400 sink_2::ypos=300 ! autovideosink \ 
-v udpsrc port=9000 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264'! rtph264depay ! video/x-h264,width=400,height=300,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert ! m. \ 
-v udpsrc port=9001 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! video/x-h264,width=400,height=300,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert ! m. \ 
-v udpsrc port=9002 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! video/x-h264,width=400,height=300,framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert ! m. 

Voici le code que j'utilise pour envoyer les flux à partir de la caméra RPI.

raspivid -n -w 640 -h 480 -t 0 -o - \ 
| gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay \ 
config-interval=10 pt=96 ! udpsink host=192.168.1.3 port=9000 
+0

hm qu'en est-il de glvideomixer? Je ne suis pas sûr comment est OpenGL fonctionnel sur RPI – nayana

+0

Pouvez-vous coller le code que vous utilisez avec deux flux attachés au mélangeur? Je ne vois pas non plus d'éléments 'queue' dans votre pipeline. – mpr

+0

@otopolsky le videomixer est sur Mac, et pour une raison quelconque glvideomixer n'apparaît pas sur ma configuration. J'ai cherché comment l'installer mais je ne trouve aucune information à ce sujet. Je dois regarder dans la mauvaise direction. Pouvez-vous par hasard me dire comment obtenir le glvideomixer installé sur le Mac (j'ai installé la base des plugins, bon, mauvais, moche et libav) mais aucun élément gl apparaît quand je fais un gst-inspect-1.0 –

Répondre

0

essai en ajoutant des éléments de file d'attente pour chaque décodage vidéo et sync=false à l'évier vidéo.

gst-launch-1.0 videomixer name=m sink_1::xpos=400 sink_2::ypos=300 ! videoconvert ! ximagesink sync=false \ 
udpsrc port=9000 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! video/x-h264,width=400,height=300 ! h264parse ! avdec_h264 ! queue ! videoconvert ! m. \ 
udpsrc port=9001 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! video/x-h264,width=400,height=300 ! h264parse ! avdec_h264 ! queue ! videoconvert ! m. \ 
udpsrc port=9002 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264 ! rtph264depay ! video/x-h264,width=400,height=300 ! h264parse ! avdec_h264 ! queue ! videoconvert ! m. 

Maintenant, mon avertissement à ce serait que je ne suis pas sûr si la vidéo sera bien lisse et en synchronisation, mais il semble sembler très bon.

De même, sur raspivid, vous voudrez probablement ajouter la propriété config-interval à l'élément rtph264pay.

raspivid -n -w 640 -h 480 -t 0 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 ! multiudpsink clients=192.168.1.3:9000,192.168.1.3:9001,192.168.1.3:9002 
+0

Merci pour la réponse. Cette solution élimine le caractère saccadé de l'image et les messages concernant les images perdues. Malheureusement, il apporte également un énorme retard aux images (environ 5 secondes) ce qui n'est pas acceptable pour mon objectif. J'ai commencé à travailler avec Gstreamer en raison de la faible latence, ce que je suis après. –

+0

J'ai eu un Pi pour tester avec. Ajout de files d'attente à la réception et mise en place d'un intervalle de configuration sur le ticket rtph264pay. Il semble maintenant fonctionner correctement et gérer les redémarrages à chaque extrémité. – mpr

+0

merci pour vos commentaires. ajouter les modifications que vous suggérez semble effectivement améliorer la performance. Génial ! –