Une partie de ma journée a été occupée en “pichaillonnages” et déménagements.
Sinon, je suis toujours en quête d’un serveur qui renverrai le flux vidéo à plusieurs clients. Néanmoins, je pense ne plus être très loin de la solution. Il doit y avoir une erreur au moment de la connexion du second client, car tant qu’on ne connecte pas le second sourcepad du serveur à un port, le premier client affiche bien le flux vidéo. Voici les commandes sur lesquelles j’ai effectué ces tests :
Émetteur :
./gst-launch -v gstrtpbin name=rtpbin rtspsrc location=rtsp://(adresse de la caméra IP):554/mpeg4/media.amp ! queue ! decodebin ! ffenc_h263 ! rtph263pay ! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! udpsink port=5000 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
Serveur :
./gst-launch gstrtpbin name=rtpbin udpsrc port=5000 caps=”application/x-rtp, media=(string)video” ! queue ! .recv_rtp_sink gstrtpsession name=session .recv_rtp_src ! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! udpsink port=6000 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_2 rtpbin.recv_rtcp_src_2 ! rtpbin.send_rtcp_sink_2 rtpbin.send_rtcp_src_2 ! udpsink port=5005 host=(adresse du récepteur 2) sync=false async=false rtpbin. ! queue ! rtpbin.recv_rtp_sink_1 rtpbin.recv_rtp_src_1 ! rtpbin.send_rtp_sink_1 rtpbin.send_rtp_src_1 ! udpsink port=7000 host=127.0.0.1 rtpbin.recv_rtcp_src_1 ! rtpbin.send_rtcp_sink_1 rtpbin.send_rtcp_src_1 ! udpsink port=6001 host=(adresse du récepteur 2) 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, seqnum-base=(guint)35089″ ! .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
Récepteur 2 :
./gst-launch udpsrc port=7000 caps=”application/x-rtp, media=(string)video, seqnum-base=(guint)35089″ ! .recv_rtp_sink gstrtpsession name=session .recv_rtp_src ! rtph263depay ! ffdec_h263 ! xvimagesink udpsrc port=5006 caps=”application/x-rtcp” ! session.recv_rtcp_sink session.send_rtcp_src ! udpsink port=7005