Audio 使用Gstreamer将多个音频流混合到一个播放声音中

Audio 使用Gstreamer将多个音频流混合到一个播放声音中,audio,stream,gstreamer,audio-streaming,mixer,Audio,Stream,Gstreamer,Audio Streaming,Mixer,我想使用Gstreamer从同一端口上的多个点接收音频流。 事实上,我希望将网络上不同节点的音频流传输到一个设备上,该设备可以收听传入的音频流,并且在播放之前应该混合多个音频。 我知道我应该使用audiomixer或liveadder来完成这样的任务。 但是我做不到,而且混音器不能正常工作,当两个音频流出现时,输出声音会非常嘈杂和损坏 我使用了以下命令: gst-launch-1.0.exe-v udpsrc port=5001 caps=“应用程序/x-rtp”! 队列rtppcmudepay

我想使用
Gstreamer
从同一端口上的多个点接收音频流。 事实上,我希望将网络上不同节点的音频流传输到一个设备上,该设备可以收听传入的音频流,并且在播放之前应该混合多个音频。 我知道我应该使用
audiomixer
liveadder
来完成这样的任务。 但是我做不到,而且混音器不能正常工作,当两个音频流出现时,输出声音会非常嘈杂和损坏

我使用了以下命令:

gst-launch-1.0.exe-v udpsrc port=5001 caps=“应用程序/x-rtp”! 队列rtppcmudepay!穆劳德克!音频混音器名称=混音! 音频转换!音频重采样!自动音频接收器


但是它不起作用。

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


然后,关于你的混音问题,你提到输出声音“嘈杂且损坏”,这让我想到了音频级别的问题。虽然
audiomixer
将输出音频剪辑到允许的最大振幅范围,但如果您的音频源太大,可能会导致音频伪影。因此,您可能希望在两个源上都使用
volume
属性。有关更多信息,请参阅和。

同一端口上的数据包不能像您在命令中编写的正常方式那样彼此进行
解复用
,要从同一端口接收多个音频流,您应该使用
SSRC
rtpssrcdemux
解复用。 但是,要在多个端口上接收多个音频流并将其混合,可以使用
liveadder
元素。从两个端口接收两个音频流并将其混合的示例如下:

gst-launch-1.0-v udpsrc name=src5001 caps=“应用程序/x-rtp” 端口=5001!rtppcmudepay!穆劳德克!音频重采样!活加法器 name=m_加法器!ALASINK设备=hw:0,0 udpsrc名称=src5002 caps=“应用程序/x-rtp”端口=5002!rtppcmudepay!穆劳德克! 音频重采样!m_加法器