У меня есть набор хороших беспроводных наушников, которые я использую время от времени, в дополнение к динамикам и обычному микрофону.
Я хотел бы написать сценарий для переключения между одним входным и выходным источником и другим, по сути, переключателем между моими наушниками и динамиками + микрофон.
Я хотел бы изменить между этим:
...и это:
Есть ли способ для меня сценарий передачи между двумя входами и выходами? По сути, я ищу что-то вроде этого:
CURRENT_INPUT="$(get-current-input-name)"
CURRENT_OUTPUT="$(get-current-output-name)"
if [ "$CURRENT_INPUT" == "Vengeance 2000" ]; then
set-current-input "HD Pro Webcam C920"
else
set-current-input "Vengeance 2000"
fi
if ["$CURRENT_OUTPUT" == "Vengeance 2000" ]; then
set-current-output "Built-in Audio"
else
set-current-output "Vengeance 2000"
fi
Есть ли способ написать это?
audio
alsa
pulseaudio
Нафтули Кей
источник
источник
man pactl
параметры командной строки PulseAudio.Ответы:
Как отметил @ Teresa-e-Junior,
pactl
это инструмент для использования:Прежде всего мы могли бы хотеть получить идентификаторы наших раковин PA. В моей системе это то, что я получаю:
Мойка 1 в настоящее время является мойкой по умолчанию.
Но теперь я хочу, чтобы все мои текущие и будущие потоки воспроизводились через HDMI (т.е. приемник 0).
Существует команда для установки приемника по умолчанию для PulseAudio, но она, похоже, не влияет на мой компьютер:
Вместо этого новые потоки, похоже, подключены к приемнику, которому поток был перемещен в него совсем недавно.
Итак, давайте скажем pactl переместить все потоки, которые сейчас воспроизводятся, в сток
0
. Сначала нам нужно перечислить их:Хорошо, у нас есть два потока (идентификаторы 290 и 295), которые оба присоединены к стоку
1
.Давайте переместим их в тонуть
0
:Так и должно быть. Теперь нам нужно сделать скрипт, который сделает всю работу за нас:
Вы можете вызывать его либо с идентификатором приемника, либо с именем приемника в качестве параметра (т. Е. Либо с
0
каким- либо другим способомalsa_output.pci-0000_01_00.1.hdmi-surround
)Теперь вы можете прикрепить этот скрипт к событию udev или сочетанию клавиш.
источник
0 sink input(s) available.
? Но этот дерьмовый флэш-плеер все еще воспроизводит звук? И я вижу флеш плеер вclient(s) logged in
разделеpacmd list
$ pacmd set-default-sink INDEX
все еще требуется для моего сценария, в противном случае клавиатурные команды для изменения громкости продолжают использовать старый источник приемника.Следующие команды используются для управления звуковым сервером PulseAudio:
Вот несколько примеров того, как они функционируют.
pacmd list-sinks
:: имя списка или номер индекса возможных приемниковpacmd set-default-sink [sinkname]
:: установить выходной приемник умолчаниюpacmd set-default-source [sourcename]
:: установить ввод по умолчаниюpacmd set-sink-volume [index] [volume]
:: установить раковину объемpacmd set-source-volume index volume
:: диапазон регулировки громкости 0 - 65536 (чем меньше цифра, тем меньше громкость)Это лишь некоторые из тех, которые я вытащил со страницы вики и руководства. Ссылка это для более подробной информации. Или вы можете просматривать либо команды
--help
илиman
страницы.Уже есть инструмент командной строки, который служит этой цели. Это имя Ponymix . Это микшер командной строки для PulseAudio. Ссылка предоставлена для проектов GitHub. Он разработан другом и коллегой Arch Linux Trusted User / Developer. Если вы не используете Arch, вы можете просто скомпилировать его из исходного кода, используя
make
иsudo make install
.источник
На моем ноутбуке с Fedora 20 выход HDMI не указан как приемник в профиле по умолчанию, а как сам другой профиль .
У меня есть только одна раковина, на динамиках моего ноутбука играет приятная музыка:
Если я бегу,
pactl set-card-profile 0 output:hdmi-stereo
то хорошая музыка играет через HDMI. Я получил:Чтобы вернуться к умолчанию, я просто бегу
pactl set-card-profile 0 output:analog-stereo+input:analog-stereo
. В любом случае, если я перезагружаюсь, снова появляется значение по умолчанию.Список профилей для моей карты где-то на
pactl list cards
выходе.источник
set-card-profile
не упоминалось ранее, и это самая важная информация в этом ответе.Расширяя принятый ответ @cinelli, я придумал сценарий, который
Изменить по мере необходимости!
источник