使用 Gstreamer 将多个音频流混合成一个播放声音
Mix multiple audio streams into one playback-sound using Gstreamer
我想使用 Gstreamer
从同一端口上的多个点接收音频流。
事实上,我想将来自网络上不同节点的音频流式传输到一台收听传入音频流的设备,并且它应该在播放前混合多个音频。
我知道我应该使用 audiomixer
或 liveadder
来完成这样的任务。
但是我做不到,而且调音台不能正常工作,当两个音频流进来时,输出的声音会很嘈杂和损坏。
我使用了以下命令:
gst-launch-1.0.exe -v udpsrc port=5001 caps="application/x-rtp" !
queue ! rtppcmudepay ! mulawdec ! audiomixer name=mix mix. !
audioconvert ! audioresample ! autoaudiosink
但是没用。
首先,您可能希望使用 audiomixer
而不是 liveadder
,因为第一个保证不同音频流的同步。
然后,关于你的混音问题,你提到输出声音是"noisy and corrupted",这让我想到了音频电平的问题。虽然 audiomixer
将输出音频剪辑到允许的最大振幅范围,但如果您的源声音太大,它可能会导致音频伪影。因此,您可能希望在两个源上都使用 volume
属性。有关详细信息,请参阅 here and there。
同一端口上的数据包不能像您在命令中编写的正常方式那样相互 demux
,要从同一端口接收多个音频流,您应该使用 SSRC
和 rtpssrcdemux
解复用器。
但是,要在多个端口上接收多个音频流并将它们混合,您可以使用 liveadder
元素。从两个端口接收两个音频流并混合它们的示例如下:
gst-launch-1.0 -v udpsrc name=src5001 caps="application/x-rtp"
port=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.
我想使用 Gstreamer
从同一端口上的多个点接收音频流。
事实上,我想将来自网络上不同节点的音频流式传输到一台收听传入音频流的设备,并且它应该在播放前混合多个音频。
我知道我应该使用 audiomixer
或 liveadder
来完成这样的任务。
但是我做不到,而且调音台不能正常工作,当两个音频流进来时,输出的声音会很嘈杂和损坏。
我使用了以下命令:
gst-launch-1.0.exe -v udpsrc port=5001 caps="application/x-rtp" ! queue ! rtppcmudepay ! mulawdec ! audiomixer name=mix mix. ! audioconvert ! audioresample ! autoaudiosink
但是没用。
首先,您可能希望使用 audiomixer
而不是 liveadder
,因为第一个保证不同音频流的同步。
然后,关于你的混音问题,你提到输出声音是"noisy and corrupted",这让我想到了音频电平的问题。虽然 audiomixer
将输出音频剪辑到允许的最大振幅范围,但如果您的源声音太大,它可能会导致音频伪影。因此,您可能希望在两个源上都使用 volume
属性。有关详细信息,请参阅 here and there。
同一端口上的数据包不能像您在命令中编写的正常方式那样相互 demux
,要从同一端口接收多个音频流,您应该使用 SSRC
和 rtpssrcdemux
解复用器。
但是,要在多个端口上接收多个音频流并将它们混合,您可以使用 liveadder
元素。从两个端口接收两个音频流并混合它们的示例如下:
gst-launch-1.0 -v udpsrc name=src5001 caps="application/x-rtp" port=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.