Comment est-il possible de suspendre la lecture de VLC lorsque mes écouteurs sont débranchés? Je peux couper les haut-parleurs via ALSA, mais je veux utiliser le déclencheur de prise pour arrêter la lecture, comme cela est habituel dans les smartphones.
vlc
headphones
video-player
playback
HerHde
la source
la source
Réponses:
Ok, donc sur la base de ce que j'ai appris d' ici , j'essaie une nouvelle approche, en utilisant ACPI.
Créez un script pour suspendre et réactiver VLC:
et placez ce qui suit sur ce fichier:
Créons maintenant un déclencheur d'événement (remplacez-le
vim
par votre éditeur de texte préféré):et ajoutez ce qui suit:
Enfin, redémarrez le démon ACPI:
Je pense que cela devrait être exactement ce dont vous avez besoin, sans sondage. Le seul inconvénient que je peux trouver avec cette implémentation est dans le cas où plusieurs utilisateurs exécutent VLC en même temps. Je suppose que dans ce cas, ce qui peut arriver, c'est que cette approche s'arrêtera au hasard et reprendra l'un d'entre eux (ou cela pourrait tout simplement ne pas fonctionner).
Félicitations à @int_ua et @Sneetsher pour m'avoir fourni des connaissances importantes concernant la gestion des événements ACPI. Bravo également à @ user3073656 pour aider à simplifier la procédure.
la source
grep -z USER /proc/$_pid/environ
afin que cela fonctionne pour tous les utilisateurs de la machine (avec une seule session en cours d'exécution / vlc). Je cherchais une telle option.Ok, vous devrez donc faire quelques choses pour cela:
Pour (1) et (3): vous pouvez utiliser ce qui est illustré ici . Cette réponse contient une petite procédure pour trouver la différence entre une prise branchée et non branchée, et un script que vous pouvez modifier pour vous conformer à votre cas.
Pour (2) et (4): vous devez utiliser l'interface Dbus de VLC. Le code pertinent doit être le suivant:
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
Pour pause et lecture respectivement.
Maintenant, à propos du script. Dans votre cas, cela devrait ressembler à ceci:
Ajoutez ce script modifié à vos applications de démarrage et vous êtes prêt. Je pense qu'il devrait faire ce que vous vouliez.
PS - Notez qu'il existe des moyens plus efficaces de le faire, tels que l'utilisation
inotify
pour détecter les changements d'événement (et peut-être même d'autres approches), mais celui-ci devrait vous aider à démarrer (et les autres sont au-dessus de mon niveau de compétence et de mon expérience). Je suppose que vous pouvez commencer avec cette approche "hackish" et construire à partir d'ici.la source
sleep 0.25
à la fin, ce qui représente un quart de seconde de retard. Cela facilite le processeur et fonctionne toujours assez rapidement. J'utilise parfois cela aussi dans mes propres scripts