如何配置GStreamer音频Sink以使用已创建的虚拟音频Sink?
问题描述
我通过以下命令创建了PulseAudio虚拟音频Sink:
pactl load-module module-null-sink sink_name=virtsink sink_properties=device.description=Virtual_Sink
目前可以通过执行GStreamer命令,再手动在「设置>声音>输出」中选择Virtual_Sink作为系统默认输出设备,实现音频流传输:
gst-launch-1.0 ... ! autoaudiosink sync=false
但这种方式必须修改系统默认输出设置,我希望能无需修改系统声音设置,直接将音频流传输至创建的虚拟Sink。
我尝试了以下命令,但执行失败:
gst-launch-1.0 -v udpsrc port=<udp-port> \ caps="..." \ ! rtpL24depay \ ! audioconvert \ ! audioresample \ ! alsasink \ device=virtsink
报错信息:
Playback open error on device 'virtsink': No such file or directory
解决方案
问题根源是你使用了alsasink插件——virtsink是PulseAudio创建的虚拟Sink,不属于ALSA设备范畴,因此alsasink无法识别它。你需要改用GStreamer的pulsesink插件来指定PulseAudio的Sink设备。
修改后的命令如下:
gst-launch-1.0 -v udpsrc port=<udp-port> \ caps="..." \ ! rtpL24depay \ ! audioconvert \ ! audioresample \ ! pulsesink device=virtsink
如果需要确认virtsink是否存在或名称是否正确,可以执行以下命令列出所有可用的PulseAudio Sink:
pactl list sinks short
输出结果中的sink_name列会显示所有已创建的Sink名称,确保你指定的virtsink在列表内即可。
内容的提问来源于stack exchange,提问作者csg
相关产品推荐
相关产品推荐

