2012-02-27 13 views
5

Próbuję zbudować rozwiązanie konferencyjne z gstreamer-java.Pipeline GStreamer z wieloma zlewami UDP (zdjęcie w zestawie)

Utknąłem z częścią audio, ponieważ każdy uczestnik powinien słyszeć tylko innych, nie siebie.

Zbudowałem potok (zobacz załączony plik obrazu).

Cała konstrukcja działa, jeśli umieściłem rtpmuxer i pojedynczy udpsink/multiudpsink na końcu. Ale w takim przypadku każdy uczestnik otrzymuje wszystkie strumienie audio zmultipleksowane (zgodnie z oczekiwaniami).

Jeśli robię to tak, jak na zdjęciu, żadne pakiety nie są tworzone (sprawdzane za pomocą wireshark). Gdzie jest mój błąd w rozumowaniu?

(można wyciągnąć obraz na inną kartę, aby móc odczytać tekst)

debug-image of the pipe

+1

Mam potok pracujący w linii poleceń, więc mój błąd wydaje się być w moim kodzie Java. Opublikuję pracujący potok jako odpowiedź dla wszystkich, którzy mogą być zainteresowani ... –

Odpowiedz

3

Jego cholery rurociągu, ale robi, co to ma. Dodałem zrzut pliku z kropkami, dzięki czemu można wyodrębnić obraz potoku dla wygody.

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.