Petite avancée aujourd’hui : j’arrive à afficher le premier client de la pipeline. Voici les commandes que j’utilise :
Émetteur :
./gst-launch -v gstrtpbin name=rtpbin rtspsrc location=rtsp://(adresse de la caméra):554/mpeg4/media.amp ! queue ! decodebin ! ffenc_h263 ! rtph263pay ! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! udpsink port=5000 sync=false async=false host=(adresse du récepteur) rtpbin.send_rtcp_src_0 ! udpsink port=5001 host=(adresse du récepteur) sync=false async=false udpsrc port=5005 ! rtpbin.recv_rtcp_sink_0 udpsrc port=5006 ! rtpbin.recv_rtcp_sink_1
Serveur :
./gst-launch gstrtpbin name=rtpbin udpsrc port=5000 caps=”application/x-rtp, media=(string)video” ! .recv_rtp_sink gstrtpsession name=session .recv_rtp_src ! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! udpsink port=6000 sync=false async=false host=(adresse du récepteur 1) udpsrc port=5001 caps=”application/x-rtcp” ! rtpbin.recv_rtcp_sink_0 rtpbin.recv_rtcp_src_0 ! rtpbin.send_rtcp_sink_0 rtpbin.send_rtcp_src_0 ! udpsink port=6001 host=(adresse du récepteur 1) sync=false async=false udpsrc port=6005 ! rtpbin.recv_rtcp_sink_1 rtpbin.recv_rtcp_src_1 ! rtpbin.send_rtcp_sink_1 rtpbin.send_rtcp_src_1 ! udpsink port=5005 host=(adresse du récepteur 2) sync=false async=false rtpbin.send_rtp_src_1 ! udpsink port=7000 host=(adresse du récepteur 2) sync=false async=false rtpbin.recv_rtcp_src_1 ! rtpbin.send_rtcp_sink_1 rtpbin.send_rtcp_src_1 ! udpsink port=7001 host=127.0.0.1 sync=false async=false udpsrc port=7005 ! rtpbin.recv_rtcp_sink_3 rtpbin.recv_rtcp_src_3 ! rtpbin.send_rtcp_sink_3 rtpbin.send_rtcp_src_3 ! udpsink port=5006 host=127.0.0.1 sync=false async=false
Récepteur 1 :
./gst-launch udpsrc port=6000 caps=”application/x-rtp, media=(string)video” ! .recv_rtp_sink gstrtpsession name=session .recv_rtp_src ! rtph263depay ! ffdec_h263 ! xvimagesink udpsrc port=6001 caps=”application/x-rtcp” ! session.recv_rtcp_sink session.send_rtcp_src ! udpsink port=6005 sync=false async=false
Récepteur 2:
./gst-launch udpsrc port=7000 caps=”application/x-rtp, media=(string)video” ! .recv_rtp_sink gstrtpsession name=session .recv_rtp_src ! rtph263depay ! ffdec_h263 ! xvimagesink udpsrc port=7001 caps=”application/x-rtcp” ! session.recv_rtcp_sink session.send_rtcp_src ! udpsink port=7005 sync=false async=false
Cependant, même s’il se lance, le second client n’affiche rien. Sur les conseils de Nicolas H., j’ai effectué ces mêmes tests mais en envoyant le flux du second client sur un autre ordinateur. Pour l’instant, je rencontre quelques problèmes car la seconde machine me renvoie l’erreur suivante :
xvimagesink.c(1639): gst_xvimagesink_xcontext_get (): /autovideosink0-actual-sink-xvimage:
Could not open display
Cependant, mon problème persiste. En effet, si je définis le second client comme étant en local, et le premier client comme étant celui de la seconde machine, si je lance uniquement l’émetteur, le serveur et le second client, rien ne s’affiche. Le problème vient donc sans doute de la pipeline.
Qui-plus-est, au lancement de mon serveur, je reçois l’erreur suivante :
AVERTISSEMENT : de l’élément /GstPipeline:pipeline0 : Internal GStreamer error: clock problem. Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
Information de débogage supplémentaire :
gstbin.c(2213): gst_bin_do_latency_func (): /GstPipeline:pipeline0:
Failed to configure latency of 0:00:00.000000000
J’effectue donc actuellement quelques recherches afin d’en savoir plus sur cette erreur, et je vais continuer d’effectuer quelques tests.