如果我通过ALSA中的USB声卡播放音乐,不小心拔掉USB电缆,那么它就会自动停止播放,从而很容易检测到问题并修复它:
$ mpv --audio-device=alsa/hw:2 sound.wav
(+) Audio --aid=1 (pcm_s16le 2ch 44100Hz)
AO: [alsa] 44100Hz stereo 2ch s16
A: 00:00:05 / 00:03:41 (2%)
[ao/alsa] Device lost, trying to recover...
...
Exiting... (Interrupted by error)
[2]然而,如果我通过脉冲音频播放音乐并拔掉USB电缆,那么它就会“失败”到另一个接收器,并继续播放:
$ mpv --audio-device=pulse/alsa_output.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.analog-stereo sound.wav
(+) Audio --aid=1 (pcm_s16le 2ch 44100Hz)
AO: [pulse] 44100Hz stereo 2ch s16
A: 00:00:16 / 00:03:41 (7%)
# no error message在这种情况下,我只有两个接收器,拔掉USB设备会导致音频连接移动到PCI设备,而PCI设备恰好是我的笔记本扬声器:
$ pacmd list-sinks | grep name:
name:
name: 重新连接USB电缆后,音频仍然通过笔记本扬声器发出。
如果我知道如何控制它,脉冲音频的行为可能是有用的,但我不知道。特别是,我希望能够控制哪个接收器在故障转移时被激活,我希望能够禁用故障转移,以便在拔出USB电缆时在客户端应用程序中出现错误。
显然,根据情况的不同,默认的行为可能会给我带来一些尴尬。例如,如果我在公共场合听一些带有耳机的私事,而Pulse音频决定通过我的笔记本扬声器重路由,那就太烦人了。如果我可以将USB接收器配置为一个空接收器(该接收器丢弃样本)或一个错误接收器(该接收器在客户端产生错误),则这种情况将得到纠正。这些都有可能吗?
发布于 2020-01-25 20:43:17
通过脉冲音频版本13.0,可以通过以下方式禁用水槽疏散
pactl unload-module module-rescue-streams或者在/etc/pulse/default.pa中注释掉适当的行。
从14.0版本开始,module-rescue-streams成为核心功能的一部分,不能卸载。但是,一个新的布尔选项已被引进使禁用它成为可能。在14.0之后,可以通过在rescue-streams=no中添加/etc/pulse/daemon.conf来禁用下沉疏散。
目前还没有计划允许用户配置某个给定流在其接收器失败时被疏散到哪个接收器。流总是被疏散到默认的接收器。
https://unix.stackexchange.com/questions/562481
复制相似问题