为 gstreamer 管道切换脉冲音频记录流
Switch puls audio record stream for gstreamer pipeline
我目前正在尝试从我的计算机上捕获音频播放并将其转发到 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 并将记录流切换到 "Monitor of Internal Analog Audio"。
到目前为止一切正常,可以在我的网络电台上收听流媒体。
现在我想执行脚本中的步骤以在启动时自动启动流。不幸的是我找不到如何切换
在脚本中记录流(我之前用 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 的正则表达式非常难看。如果有人有更好的方法请告诉我:-)。
BR webbolle
我目前正在尝试从我的计算机上捕获音频播放并将其转发到 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 并将记录流切换到 "Monitor of Internal Analog Audio"。
到目前为止一切正常,可以在我的网络电台上收听流媒体。
现在我想执行脚本中的步骤以在启动时自动启动流。不幸的是我找不到如何切换 在脚本中记录流(我之前用 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 的正则表达式非常难看。如果有人有更好的方法请告诉我:-)。
BR webbolle