切换gstreamer管道的puls音频记录流

切换gstreamer管道的puls音频记录流,gstreamer,pulseaudio,Gstreamer,Pulseaudio,目前,我尝试从我的计算机捕获音频播放,并将其转发到icecast2服务器,这样我就可以通过互联网收音机收听计算机播放 因此,我首先用以下方法grep正确的声卡: pactl list | grep -A2 'Source #' | grep 'Name: ' | cut -d" " -f2 并通过以下方式打开gstreamer管线: gst-launch-1.0 pulsesrc device=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor

目前,我尝试从我的计算机捕获音频播放,并将其转发到icecast2服务器,这样我就可以通过互联网收音机收听计算机播放

因此,我首先用以下方法grep正确的声卡:

pactl list | grep -A2 'Source #' | grep 'Name: ' | cut -d" " -f2
并通过以下方式打开gstreamer管线:

gst-launch-1.0 pulsesrc device=alsa_output.pci-0000_00_1b.0.analog-stereo.monitor ! audioconvert ! lamemp3enc target=1 bitrate=128 cbr=true ! shout2send ip=127.0.0.1 port=8000 password=XXXXX mount=mystream.mp3
执行上述命令后,我可以进入pavucontrol->record,并将录制流切换到“内部模拟音频监视器”

到目前为止,一切正常,a可以在我的网络收音机上收听这条流

现在,我想执行脚本中的步骤,以便在启动时自动启动流。不幸的是,我无法找到如何切换 在脚本中记录流(我以前使用pavucontrol做过)


BR webbolle

可以创建一个脚本,使用以下命令更改pavucontrol->record选项卡的音频源设备:

#get the id of the Record device
ID=`pactl list | grep -E "(Source\sOutput|media\.name)" | grep Record\ Stream -B1 | grep -o -E -m1 "[0-9]+"`

#switch the record device to analog-stereo.monitor
pactl move-source-output $ID alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
我认为我用来获取记录流的源ID的正则表达式非常难看。如果有人有更好的方法,请告诉我:-)

韦伯勒酒店