2017-08-28 4 views
0

J'essaie d'implémenter un système qui prend en charge le flux de caméra en direct, superpose du texte et des symboles (en utilisant la transparence du canal Alpha); et le transmet sur RTP/UDP, comme une seule vidéo (à partir d'un port). Les systèmes hôte et client ont i.MX6QP activé. Pour l'instant, j'essaie de comprendre le système GStreamer et pipeline avec gst-launch, et seulement en utilisant des modèles de test comme sources vidéo.Diffusion de vidéos superposées sur RTP

Voici un schéma simplifié pour montrer ce que je suis en train de réaliser:
enter image description here

J'ai vu le plugin videomixer, mais d'après ce que je comprends, il est utilisé seulement pour superposant et lecture de vidéos , pas pour créer des flux vidéo "transmissibles". (Je peux l'utiliser avec xvimagesink, mais je n'ai pas réussi à implémenter le pipeline avec udpsink et je n'ai pas trouvé de solution de contournement.)

Je n'ai pas réussi à trouver les bons outils/méthodes pour mettre en œuvre le système décrit ci-dessus. Ai-je raison sur le plugin vidéomixer? Si oui, que me suggérez-vous de faire? Toute aide est appréciée, merci d'avance.

+0

Quelle est la nature de vos vidéos en triangle et cercle: RAW, compressé? (Je suppose que c'est RAW pour l'instant puisque vous utilisez 'videotestsrc') – Ahresse

+0

Vous avez raison, ils sont RAW pour l'instant. – ddyn

Répondre

1

Si vous êtes flux de traitement sur I.MX6, vous devriez jeter un oeil à le plugin imxg2dcompositor dans gstreamer-imx

gst-inspect-1.0 imxg2dcompositor 

De leur exemple, vous pouvez essayer quelque chose comme:

gst-launch-1.0 \ 
    imxg2dcompositor name=c background-color=0x223344 \ 
     sink_0::xpos=0 sink_0::ypos=90 sink_0::width=160 sink_0::height=110 sink_0::zorder=55 sink_0::fill_color=0xff00ff00 sink_0::alpha=0.39 sink_0::rotation=0 \ 
     sink_1::xpos=0 sink_1::ypos=20 sink_1::width=620 sink_1::height=380 sink_1::fill_color=0x44441133 ! \ 
    queue2 ! "video/x-raw, width=800, height=600" ! imxipuvideotransform ! imxvpuenc_h264 ! rtph264pay ! udpsink \ 
    videotestsrc pattern=0 ! "video/x-raw, framerate=30/1" ! c.sink_0 \ 
    videotestsrc pattern=18 ! "video/x-raw, framerate=30/1" ! c.sink_1 

Je vous conseille de ne pas manquer la partie de codage vidéo qui est essentielle lors de la configuration des applications de streaming vidéo (le plugin d'encodage H.264 est imxvpuenc_h264). Cette étape de codage est suivie d'un payeur RTP spécifique.

+0

Ok, c'est plus facile à comprendre avec votre diagramme :) – Ahresse

+1

Désolé je n'avais pas accès aux forums la semaine dernière, donc je viens d'essayer votre pipeline. Il donne une erreur, en disant "ATTENTION: pipeline erroné: impossible de lier queue2-0 à imxvpuh264enc0". L'ajout d'un élément imxipuvideotransform avant le codeur résout ce problème. Je vous remercie beaucoup pour votre aide! – ddyn