Как можно приостановить воспроизведение VLC, когда мои наушники подключены? Я могу отключить звук через ALSA, но я хочу использовать пусковой курок, чтобы остановить воспроизведение, как это обычно бывает в смартфонах.
vlc
headphones
video-player
playback
HerHde
источник
источник
Ответы:
Итак, основываясь на том, что я узнал здесь , я пробую новый подход с использованием ACPI.
Создайте сценарий для приостановки и приостановки VLC:
и поместите в этот файл следующее:
Теперь давайте создадим триггер события (замените его
vim
на ваш любимый текстовый редактор):и добавьте следующее:
Наконец, перезапустите демон ACPI:
Я думаю, что это именно то, что вам нужно, без участия в опросе. Единственный недостаток, который я могу найти в этой реализации, заключается в том, что у вас есть несколько пользователей, использующих VLC одновременно. Я полагаю, что в этом случае может случиться так, что этот подход случайным образом остановит и возобновит один из них (или он может просто не работать).
Большое спасибо @int_ua и @Sneetsher за предоставленную мне важную информацию об обработке событий ACPI. Также спасибо @ user3073656 за упрощение процедуры.
источник
grep -z USER /proc/$_pid/environ
чтобы он работал для всех пользователей на машине (с одним запущенным сеансом / vlc). Я искал такой вариант.Итак, вам нужно сделать несколько вещей для этого:
Для (1) и (3): Вы можете использовать то, что показано здесь . Этот ответ содержит небольшую процедуру, чтобы найти разницу между подключенным и отключенным разъемом, и сценарий, который вы можете изменить в соответствии со своим случаем.
Для (2) и (4): Вы должны использовать интерфейс Dbus VLC. Соответствующий код должен быть таким:
dbus-send --print-reply --session --dest=org.mpris.vlc /Player org.freedesktop.MediaPlayer.Pause
dbus-send --print-reply --session --dest=org.mpris.vlc /Player org.freedesktop.MediaPlayer.Play
Для паузы и воспроизведения соответственно.
Теперь о сценарии. В вашем случае это должно выглядеть примерно так:
Добавьте этот измененный скрипт в свои автозагрузки, и все готово. Я думаю, что это должно делать то, что вы хотели.
PS - Обратите внимание, что есть более эффективные способы сделать это, например, использовать
inotify
для обнаружения изменений событий (и, возможно, даже другие подходы), но этот должен помочь вам начать (а другие выше моего уровня навыков и опыта). Я полагаю, что вы можете начать с этого "хакерского" подхода и продолжить отсюда.источник
sleep 0.25
в конце, что составляет четверть секунды задержки. Это облегчает работу процессора и все еще работает достаточно быстро. Я тоже иногда использую это в своих сценариях