Wie kann ich die Wiedergabe von VLC anhalten, wenn meine Kopfhörer angeschlossen sind? Ich kann die Lautsprecher über ALSA stumm schalten, möchte aber den Plug-Trigger verwenden, um die Wiedergabe zu stoppen, wie es bei Smartphones üblich ist.
vlc
headphones
video-player
playback
HerHde
quelle
quelle
Antworten:
Ok, basierend auf dem, was ich hier gelernt habe , versuche ich einen neuen Ansatz mit ACPI.
Erstellen Sie ein Skript zum Anhalten und Aufheben der VLC-Pause:
und füge folgendes in diese Datei ein:
Jetzt erstellen wir einen Ereignisauslöser (durch
vim
Ihren bevorzugten Texteditor ersetzen ):und fügen Sie Folgendes hinzu:
Starten Sie zum Schluss den ACPI-Daemon neu:
Ich denke, das sollte genau das sein, was Sie benötigen, ohne dass Umfragen erforderlich sind. Der einzige Nachteil, den ich bei dieser Implementierung feststellen kann, besteht darin, dass mehrere Benutzer gleichzeitig VLC ausführen. Ich nehme an, in diesem Fall kann es passieren, dass dieser Ansatz zufällig einen von ihnen anhält und wieder aufnimmt (oder einfach nicht funktioniert).
Ein großes Dankeschön an @int_ua und @Sneetsher, die mir wichtige Informationen zur Behandlung von ACPI-Ereignissen gegeben haben. Außerdem können Sie sich an @ user3073656 wenden, um das Verfahren zu vereinfachen.
quelle
grep -z USER /proc/$_pid/environ
abzurufen , damit dies für alle Benutzer auf dem Computer funktioniert (mit einer einzigen ausgeführten Sitzung / vlc). Ich habe nach einer solchen Option gesucht.Ok, dafür müssen Sie ein paar Dinge tun:
Für (1) und (3): Sie können mit Gezeigten hier . Diese Antwort enthält eine kleine Prozedur zum Ermitteln des Unterschieds zwischen einer gesteckten und einer nicht gesteckten Buchse sowie ein Skript, das Sie an Ihren Fall anpassen können.
Für (2) und (4): Sie sollten die Dbus-Schnittstelle von VLC verwenden. Der relevante Code sollte dies sein:
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
Zum Anhalten bzw. Spielen.
Nun zum Drehbuch. In Ihrem Fall sollte es ungefähr so aussehen:
Fügen Sie dieses geänderte Skript Ihren Startanwendungen hinzu, und Sie sind fertig. Ich denke, es sollte tun, was du wolltest.
PS: Beachten Sie, dass es effizientere Möglichkeiten gibt, dies zu tun, z. B.
inotify
das Erkennen von Ereignisänderungen (und möglicherweise auch andere Ansätze). Diese sollten Ihnen jedoch den Einstieg erleichtern (und die anderen liegen über meinem Können und meiner Erfahrung). Ich nehme an, Sie können mit diesem "hackischen" Ansatz beginnen und von hier aus aufbauen.quelle
sleep 0.25
am Ende eine hinzufügen , was einer Viertelsekunde Verzögerung entspricht. Das schont die CPU und geht trotzdem schnell genug. Ich benutze dies manchmal auch in meinen eigenen Skripten