Как адресовать один или несколько аудиопотоков, находящихся в одном RTPBIN? - PullRequest
1 голос
/ 03 февраля 2012

У меня есть клиент, отправляющий 4 потока аудио с помощью gstreamer, например:

gst-launch -v audiotestsrc freq=440 ! audioconvert ! audioresample ! mulawenc ! rtppcmupay ! udpsink host=192.168.0.91 port=5000

остальные 3 потока такие же, кроме заданной частоты.есть

gst-launch udpsrc caps=\"application/x-rtp, media=audio \" port=5000 ! rtppcmudepay ! mulawdec ! liveadder name=mix ! libvisual_lv_scope ! ffmpegcolorspace ! 'video/x-raw-yuv, framerate=25/1 ,width=1024 ,height=786' ! xvimagesink gstrtpbin ! mix.

, который смешивает аудиопотоки и отображает их.Пока все хорошо.

Что мне нужно, так это возможность отфильтровать один или несколько аудиопотоков из RTPBIN на стороне приемника.Я полагаю, что это можно сделать с помощью SSRC и IP-адреса каждого клиента, хотя я понятия не имею, как это сделать.

Спасибо заранее !!

1 Ответ

0 голосов
/ 22 февраля 2012

Я сам нашел ответ.

GStreamers RTPBIN имеет сигнал NEW_PAD_ADDED с новым пэдом в качестве параметра.Вы можете подписаться на этот сигнал, а затем подключить свою следующую панель приемника элементов к вновь добавленной исходной панели следующим образом (java):

rtpbin.connect(new Element.PAD_ADDED() {            
@Override
    public void padAdded(Element element, Pad pad) {    

    PadLinkReturn linkOk;
    linkOk = pad.link(someElement.getStaticPad("sink"));
    System.out.println(linkOk);

    }
});

, где someElement - следующий элемент в вашей трубе.LinkOk выводит на экран статус ссылки и почему она, вероятно, потерпела неудачу.проверьте этот для справки

...