Выберите звуковую карту с помощью консольных команд

795
Thommy

Можно ли использовать приложение cinnamon-settings в командной строке для изменения звуковой карты по умолчанию? Звуковая карта по умолчанию не установлена ​​в dconf.
Я пытаюсь написать скрипт, который переключается между HDMI и аналоговым звуком.

1

1 ответ на вопрос

2
Alexx Roche

Я думаю, что вы ищете

pacmd set-default-sink <sink_name|index> 

как указано в https://askubuntu.com/questions/690711/change-sound-output-from-command-line и https://askubuntu.com/questions/14077/how-can-i-change-the-default -audio-устройства из-командной строки

Вы можете получить доступный индекс с

pacmd list-sinks|grep index|awk '' 

Если вы хотите контролировать громкость, вы можете сделать это в командной строке с помощью alsamixer (ncurses) или amixer.

Если вы собираетесь играть с настройками pulseaudio, то

cp -i /etc/pulse/default.pa ~/.config/pulse/ 

даст вам собственную копию, которую безопаснее редактировать

pulseaudio -k #should restart pulseaudio after you change settings. 

Для вашего сценария вы можете проверить, совместимы ли доступные скорости звука с вашим устройством-приемником:

grep rates $(grep -ci hdmi /proc/asound/card*/codec#0|grep -v :0|sed 's,:.$,,'|head -n1) 

и в зависимости от того, к какому профилю прикреплена каждая карта

pactl --server "unix:/run/user/$(id -u)/pulse/native" set-card-profile 1 output:analog-stereo 

а также

pactl --server "unix:/run/user/$(id -u)/pulse/native" set-card-profile 0 output:hdmi-stereo 

может помочь создать полезные переменные. Похоже, кто-то уже пытался сделать то, что вы делаете :

Но некоторые их переменные либо специфичны для archlinux, либо устарели. (Хотя их путь к запуску вашего скрипта может помочь.)

Я попробовал это, но это не работает, пока я не вошел в систему или не перезапустился. Thommy 6 лет назад 0
Вы сделали pulaudio -k Alexx Roche 6 лет назад 0
Да. Я также пробовал с выходом профиля `pacmd set-card-profile 2: iec958-stereo` Thommy 6 лет назад 0
if ** pacmd list-cards | grep output \: hdmi-stere ** обнаруживает, что ваша карта ** pactl set-card-profile 0 output: hdmi-стерео ** внес изменения? https://askubuntu.com/a/541043/155829 Alexx Roche 6 лет назад 0
Диспетчер настроек показывает изменения, но звук по-прежнему поступает не на те динамики. Когда я пробую pacmd move-output, он говорит, что index не существует. Thommy 6 лет назад 0
Что такое ** pacmd list-cards | grep -A1 index ** говорите? Alexx Roche 6 лет назад 0
индекс: 0 имя: Thommy 6 лет назад 0
ndex: 1 имя: Thommy 6 лет назад 0
** pacmd set-default-раковина alsa_card.usb-C-Media_Electronics_Inc._USB_Audio_Device-00 ** должна переключать вывод * приемники списка pacmd | имя grep: | sed -e 's /.* $ //' *, вероятно, более чистый способ перечислить раковины Alexx Roche 6 лет назад 0
Просто запустил чистую машину debian8 и пока я не запустил ** pactl set-card-profile-profile 0 output: hdmi-стерео ** hdmi не был указан в * pacmd list-cards * - тогда я проверил ** cat / sys / класс / drm / карта * HDMI * / статус ** и обнаружил, что мой кабель был свободным Alexx Roche 6 лет назад 0
Движущаяся раковина просто не будет работать. Я нашел способ, используя API моей среды рабочего стола. Таким образом, он не совместим с другими DE, но, по крайней мере, теперь он работает для меня. Спасибо за вашу помощь. Thommy 6 лет назад 0
Вы можете опубликовать свое решение в качестве ответа. Alexx Roche 6 лет назад 0
Подойдет, но мне нужно сначала очистить код :) Thommy 6 лет назад 0