2017-08-01 276 views
1

我想使用Gstreamer來接收來自同一端口上多個點的音頻流。 事實上,我想要將來自網絡上不同節點的音頻流式傳輸到一臺監聽傳入音頻流的設備,並且它應該在播放前混合使用多個音頻設備。 我知道我應該使用audiomixerliveadder來完成這樣的任務。 但是我不能這樣做,調音臺不能正常工作,當兩個音頻流出現時,輸出的聲音會非常嘈雜和損壞。使用Gstreamer將多個音頻流混合成一個播放聲音

我用下面的命令:

GST-發射-1.0.exe -v udpsrc端口= 5001個帽= 「應用程序/ x-RTP」! 排隊! rtppcmudepay! mulawdec! audiomixer名稱=混音。 ! audioconvert! audioconvert! audioresample! autoaudiosink

但它不起作用。

回答

1

作爲您在命令中編寫的常規方式,在同一端口上的數據包不能互相對應demux,要從同一端口接收多個音頻流,應使用SSRCrtpssrcdemux demux。 但是,要在多個端口上接收多個音頻流並混合它們,您可以使用liveadder元素。一個例子來從兩個端口接收兩個音頻流和混合它們如下:

GST-發射-1.0 -v udpsrc名稱= src5001帽= 「應用程序/ x-RTP」 端口= 5001! rtppcmudepay! mulawdec! audioresample! liveadder name = m_adder! alsasink device = hw:0,0 udpsrc name = src5002 caps =「application/x-rtp」port = 5002! rtppcmudepay! mulawdec! audioresample! m_adder。

0

首先,您可能希望使用audiomixer而不是liveadder作爲第一個保證不同音頻流的同步。

然後,關於你的混音問題,你提到輸出聲音是「噪聲和損壞」,這使我想到音頻電平的問題。儘管audiomixer將輸出音頻剪輯到最大允許的幅度範圍,但如果信號源太大,可能會導致音頻假象。因此,您可能想要在兩個來源中使用volume屬性。有關更多信息,請參見herethere

1

然後,關於你的混音問題,你提到輸出的聲音是「噪聲和損壞」,這讓我想到音頻電平的問題。

我與Gstreamer Audiomixer有同樣的問題,但它與音頻電平無關。兩個音頻電平都是正常的,沒有那麼大聲。 請共享一個採樣管道,以便在同一端口上接收多個音頻流,例如:5001,然後將它們混合播放。