使用Gstreamer将多个音频流混合成一个播放声音

时间:2017-08-01 10:01:48

标签: audio stream gstreamer audio-streaming mixer

我想使用Gstreamer从同一端口上的多个点接收音频流。 实际上,我想将来自网络上不同节点的音频流式传输到一个监听传入音频流的设备,并且它应该在播放前混合多个音频。 我知道我应该使用audiomixerliveadder来完成这项任务。 但是我不能这样做,并且调音台没有正常工作,当两个音频流来时,输出声音会如此嘈杂和损坏。

我使用了以下命令:

  

gst-launch-1.0.exe -v udpsrc port = 5001 caps =“application / x-rtp”!   排队! rtppcmudepay! mulawdec! audiomixer name = mix mix。 !   audioconvert!听觉样本! autoaudiosink

但它不起作用。

3 个答案:

答案 0 :(得分:1)

  

然后,关于你的混音问题,你提到输出声音是'#34;嘈杂和损坏",这让我想到了音频电平的问题。

我和Gstreamer Audiomixer有同样的问题,但它与音频水平无关。两个音频电平都很正常,不那么响亮。 请共享一个示例管道以在同一端口上接收多个音频流,例如:5001,然后将它们混合播放。

答案 1 :(得分:1)

同一端口上的数据包与您在命令中写入的正常方式相互之间不能demux,要从同一端口接收多个音频流,您应该使用SSRCrtpssrcdemux解复用。 但是,要在多个端口上接收多个音频流并将它们混合,您可以使用liveadder元素。从两个端口接收两个音频流并将它们混合的示例如下:

  

gst-launch-1.0 -v udpsrc name = src5001 caps =“application / x-rtp”   port = 5001! rtppcmudepay! mulawdec!听觉样本! liveadder   name = m_adder! alsasink device = hw:0,0 udpsrc name = src5002   caps =“application / x-rtp”port = 5002! rtppcmudepay! mulawdec!   听觉样本! m_adder。

答案 2 :(得分:0)

首先,您可能希望audiomixer使用liveadder,因为第一个保证同步不同的音频流。

然后,关于你的混音问题,你提到输出声音是“嘈杂和腐败”,这让我想到了音频电平的问题。虽然audiomixer将输出音频剪辑到允许的最大幅度范围,但如果您的音源太大,则会导致音频伪影。因此,您可能希望在两个源上使用volume属性。有关详细信息,请参阅herethere