GStreamer Pipeline с несколькими приемниками UDP (изображение включено) - PullRequest
5 голосов
/ 27 февраля 2012

Я пытаюсь создать решение для конференц-связи с помощью gstreamer-java.

Я застрял с аудио-частью, потому что каждый участник должен слышать только других, а не себя.

Я построил конвейер (см. Прилагаемый файл изображения).

Вся конструкция работает, если я поставлю rtpmuxer и один udpsink / multiudpsink в конце. Но в этом случае каждый участник получает все аудиопотоки мультиплексированными (как и ожидалось).

Если я делаю это так, как на картинке, пакеты не создаются (проверено с помощью wireshark). Где моя ошибка в рассуждениях?

(вы можете перетащить изображение на другую вкладку, чтобы прочитать текст)

debug-image of the pipe

1 Ответ

3 голосов
/ 28 февраля 2012

Это адский конвейер, но он делает то, что должен.Я добавил дамп дот-файла, чтобы вы могли для удобства извлечь изображение конвейера.

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.
...