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
Недостаток этого метода заключается в том, что индекс входного потока изменяется каждый раз, когда мы останавливаем и перезапускаем музыкальный проигрыватель. Поэтому нам всегда нужно выяснить текущий индекс потока, прежде чем мы сможем переключиться с помощью строки комманд.
pactl list short sinks
>4 bluez_sink.FC_A8_9A_2C_EB_0B module-bluez5-device.c s16le 1ch 8000Hz IDLE
теперь просто ссылаться на имяpactl set-default-sink bluez_sink.FC_A8_9A_2C_EB_0B
set-default-sink
но вам все равно понадобится индексmove-sink-input
.0 sink input(s) available.
? Но этот дерьмовый флэш-плеер все еще воспроизводит звук?client(s) logged in
разделеpacmd list
Я написал простой сценарий для автоматического перемещения всех входных данных.
Использование:
./movesinks.sh <sink number>
источник
Улучшенная версия скрипта @Gaco
моя копия во время выполнения находится на github и включает в себя также автоматическое переключение главного канала для
kmix
источник
Существует скрипт ruby (который я изначально разветвлял и переписывал), который позволяет вам изменять приемники по умолчанию, громкость и состояние отключения звука из командной строки.
источник
Я собрал воедино материал из нескольких разных мест и придумал этот сценарий для настройки Bluetooth JAMBOX после его сопряжения. Ваш MAC будет другим, конечно. Поскольку я контролирую громкость JAMBOX с помощью приложения Clementine, 130% громкости лучше всего работает в моем случае. Возможно, вы захотите изменить это, наряду с rhythmbox.png (это была единственная картинка динамика, которую я смог найти на своем компьютере). Проверка ошибок является элементарной, но работает довольно надежно. Я поместил это в настольный лаунчер для удобства на нетбуке ASUS.
источник
pactl list short
. Вы можете упростить следующую строку, выполнив разрез сразу после:pactl list short sink-inputs | cut -f1 | while read streamId
работает для меня.КРУЖИНЫ КРУЖЕВНЫЕ.
Скрипт Gaco с еще одной линией для переключения по кругу через доступные приемники.
источник
И вот скрипт, который будет переключаться между приемниками:
http://marginalhacks.com/index.0.html#pulse-switch-out
Вот скрипт ниже:
источник
Основываясь на ответе Гако, я немного переписал его для личного использования. Может быть, кто-то считает это полезным. Это для переключения моих USB-колонок и игровой гарнитуры USB.
источник
Я думаю, что есть еще один вариант, о котором стоит упомянуть, и он доступен на официальной странице часто задаваемых вопросов о PulseAudio по адресу freedesktop.org . Под следующим заголовком:
Для этого они предоставляют следующий скрипт:
источник
Я адаптировал @mpapis к простому «переключателю sink0 или sink1» при запуске:
источник