2017-08-01 269 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,然后将它们混合播放。