PulseAudio pacmd
не способен переключать приемники по умолчанию при активном воспроизведении потока на входе приемника. Однако есть способ добиться этого.
Изменение приемника по умолчанию из командной строки
Сначала нам нужно определить номер индекса приемников, которые мы хотим переключить. Это можно сделать, позвонив:
pacmd list-sinks
В зависимости от нашей системы это даст вам более или менее длинный список приемников и свойств, доступных в настоящее время:
>>> 2 sink(s) available. * index: 0 name: <alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1> driver: <module-alsa-card.c> : : index: 1 name: <alsa_output.pci-0000_00_14.2.analog-stereo> driver: <module-alsa-card.c>
То index
или в name
здесь приведено то, что нам нужно для обращения к приемнику с помощью командной строки. Текущий приемник по умолчанию отмечен звездочкой (здесь 0
).
Чтобы иметь возможность переключать приемники по умолчанию из командной строки, нам может потребоваться отключить восстановление целевого устройства потока отредактировав соответствующую строку в /etc/pulse/default.pa
к:
load-module module-stream-restore restore_device=false
Чтобы изменить выходной приемник по умолчанию на приемник 1
затем мы запускаем
pacmd set-default-sink 1
Успех можно визуализировать, открыв Настройки звука меню.
Перемещение потока в другой приемник
Изменение приемника по умолчанию, пока у нас есть активный входной поток, воспроизводимый для данного приемника не имеет никакого эффекта. Это скорее следует сделать, переместив этот ввод в другой приемник.
pacmd list-sink-inputs
сообщит нам индекс входного потока
>>> 1 sink input(s) available. index: 5 driver: <protocol-native.c>
Теперь мы знаем, что хотим переместить входной поток 5
чтобы утонуть 1
позвонив
pacmd move-sink-input 5 1
или снова погрузиться в воду 0
если захотим. Это будет сделано немедленно, без необходимости остановки воспроизведения.
Изменение приемника по умолчанию во время воспроизведения
Конечно, мы можем объединить эти две команды, чтобы немедленно переключать приемники по умолчанию во время воспроизведения, например, с помощью
pacmd set-default-sink 1 & pacmd move-sink-input 5 1
Недостатком этого метода является то, что изменение индекса входного потока каждый раз, когда мы останавливаем и перезапускаем музыкальный проигрыватель. Таким образом, мы всегда должны узнать текущий индекс потока, прежде чем мы сможем переключиться с помощью командной строки.