Reputation: 1754
I am trying to build a conferencing solution with gstreamer-java.
I am stuck with the audio part, because every participant should only hear the others, not himself.
I constructed a pipeline (see the included image file).
The whole construct works, if I put a rtpmuxer and a single udpsink / multiudpsink at the end. But in that case, every participant gets all audio streams multiplexed (as expected).
If I do it like in the picture no packets are created (checked with wireshark). Where is my error in reasoning?
(you can pull the image to another tab to be able to read the text)
Upvotes: 7
Views: 4617
Reputation: 1754
Its a hell of a pipeline, but it does, what it's supposed to. I added a dump of a dot-file, so you can extract the image of the pipeline for convenience.
GST_DEBUG_DUMP_DOT_DIR=/tmp/ gst-launch --gst-debug-level=2 gstrtpbin name=rtpbin latency=2 sync=false udpsrc name=udpsrc0 caps="application/x-rtp, media=audio, clock-rate=8000, payload=0, encoding-name=PCMU" port=5000 ! rtpbin.recv_rtp_sink_0 rtpbin. ! rtppcmudepay ! mulawdec ! tee name=t0 ! queue max-size-buffers=150 ! liveadder name=mix1 ! mulawenc ! rtppcmupay ! udpsink name=udpsink1 host=192.168.0.101 port=5050 t0. ! queue max-size-buffers=150 ! liveadder name=mix2 ! mulawenc ! rtppcmupay ! udpsink name=udpsink2 host=192.168.0.112 port=5050 rtpbin. ! rtppcmudepay ! mulawdec ! tee name=t1 ! queue max-size-buffers=150 ! liveadder name=mix0 ! mulawenc ! rtppcmupay ! udpsink name=udpsink0 host=192.168.0.101 port=5051 t1. ! queue max-size-buffers=150 ! mix2. rtpbin. ! rtppcmudepay ! mulawdec ! tee name=t2 ! queue max-size-buffers=150 ! mix0. t2. ! queue max-size-buffers=150 ! mix1.
Upvotes: 5