2012-02-27 6 views
5

gstreamer-java를 사용하여 회의 솔루션을 구축하려고합니다.여러 개의 UDP 싱크가있는 GStreamer 파이프 라인 (이미지 포함)

모든 참가자는 자신이 아닌 다른 사람의 음성 만 듣기 때문에 오디오 파트가 붙어 있습니다.

파이프 라인을 구성했습니다 (포함 된 이미지 파일 참조).

끝에 rtpmuxer 및 단일 udpsink/multiudpsink를 넣으면 전체 구조가 작동합니다. 그러나이 경우 모든 참가자는 모든 오디오 스트림을 멀티플렉싱합니다 (예상대로).

그림 에서처럼 패킷을 만들지 않습니다 (wireshark로 확인). 추론의 오류는 어디에 있습니까?

(당신의 텍스트를 읽을 수 있도록 다른 탭에 이미지를 당길 수) 파이프 라인의

debug-image of the pipe

+1

커맨드 라인에서 파이프 라인이 작동하므로 내 Java 코드에 오류가있는 것 같습니다. 내가 관심을 가질만한 모든 사람들의 대답으로 작업 파이프 라인을 게시 할 것입니다 ... –

답변

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.