2012-02-03 6 views
1

私はこのようなのgstreamerとオーディオの4つのストリーム送信するクライアントがあります。1つのRTPBINにある1つまたは複数のオーディオストリームを扱う方法は?

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から1つ以上のオーディオストリームをフィルタリングする可能性です。 これはSSRCと各クライアントのIPで行うことができると私は考えています。

thxは事前にたくさん!!

答えて

0

私は自分自身で答えを見つけました。

GStreamers RTPBINは、新しいパッドをパラメータとしてNEW_PAD_ADDED信号を受け取ります。あなたはその信号をサブスクライブして、あなたの次の要素は、このように新しく追加されたソースパッドに(javaの)パッドをシンクフックすることができます:someElementはあなたのパイプ内の次の要素である

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); 

    } 
}); 

。 LinkOkはリンクのステータスとそれがおそらく失敗した理由を表示します。参照用にthisを確認してください。

+0

クライアントホストを識別する問題は解決しません。私は、JavaのrtpbinからCNAMEを取得する方法を知らない。 –

関連する問題