Из скрипта bash воспроизводите звук через внутренние динамики, оставляя их фактически отключенными, в противном случае

293
palidin

Ранее я опубликовал аналогичный вопрос, но Камиль Макиоровски правильно и мудро указал, что, как было написано, это была не единственная проблема, а всего лишь 3, поэтому я удалил сломанную систему и вопрос. Я начинаю с новой установки Lubuntu, текущей. Из коробки при включении блютуз наушников звук воспроизводится через них, а не через внутренние динамики. Если я выключаю наушники, звук автоматически воспроизводится через динамики.

Я бы предпочел, чтобы звук колонок никогда не отправлялся, если я явно не направляю им вывод определенной команды. Например, псевдокод: aplay /path/fire-alarm.wav -o speakersи все остальные звуки воспроизводятся через наушники, если они доступны, а в остальном просто не воспроизводятся вообще.

Если нет прямого положения для такой политики, мне интересно, есть ли какой-нибудь способ заставить систему видеть / dev / null как постоянно работающий и всегда доступный аудио-приемник, который стоит на втором месте после наушников и впереди? внутренних динамиков. Это, в сочетании с командой «воспроизвести этот звук через динамики», должно сделать это.

Если ни то, ни другое невозможно, команды для отключения и включения динамиков, не влияя на функцию наушников и без повторной регистрации, будут служить цели почти так же хорошо, при условии, что что-то в архитектуре звука византийского линукса самопроизвольно не решит «О, ваши динамики выключен, я исправлю это для вас. "

Это не то же самое, что просто сказать, что наушники Bluetooth должны быть по умолчанию. Так оно и есть сейчас. Если я смотрю «Дебби в Дубае» и наушники выходят за пределы диапазона, или у меня кончается сок, или я просто шариваю их пальцами, пытаясь отрегулировать их физическое положение, я не хочу, чтобы звук автоматически сдвигался, чтобы начать выходить спикеров.

Что мне нужно, так это политика, которая ничего не отправляет докладчикам, если я явно не скажу, чтобы она отправляла туда конкретный поток, а затем отправляет только это, или, если это не так, способ сценария отключить и включить выступающих без повторной регистрации.

0

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

0
TheCompWiz

PULSE_SINK = <имя_пути> someprogram

Вы можете получить список доступных имен раковин:

LANG=C pactl list | grep -A2 'Sink #' | grep Name: | cut -d" " -f2 
Отлично. Тем временем я нашел команды для отключения и включения звука только динамиков: `pactl set-sink-mute 0 1` &` pactl set-sink-mute 0 0`. Я отключу их в сценарии запуска и в сценарии, который я хочу воспроизвести через spkrs, включу звук, использую вашу команду и получу вознаграждение. Не совсем то, что я искал, но достаточно близко. В моем реальном случае различие будет иметь значение редко. Благодарю. palidin 6 лет назад 0

Похожие вопросы