2012-02-27 42 views
5

我正嘗試使用gstreamer-java構建會議解決方案。帶有多個UDP接收器的GStreamer管道(包含圖像)

我被困在音頻部分,因爲每個參與者只應該聽到其他人,而不是他自己。

我構建了一個管道(請參閱包含的圖像文件)。

如果我在末尾放置一個rtpmuxer和一個單獨的udpsink/multiudpsink,那麼整個構造都可以工作。但是在這種情況下,每個參與者都會獲得所有音頻流的複用(如預期的那樣)。

如果我像圖片一樣做,就不會創建數據包(使用wireshark進行檢查)。我在推理中的錯誤在哪裏?

(你可以將圖像拉到另一個選項卡可以閱讀文本)

debug-image of the pipe

+1

我得到了管道在命令行工作,所以我的錯誤似乎是在我的Java代碼。我將發佈工作流程作爲每個可能感興趣的人的答案...... – 2012-02-28 10:47:58

回答

3

其管道的地獄,但它確實,有什麼它應該。我添加了一個點文件轉儲,因此您可以爲了方便而提取管道圖像。

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.