¿Cómo es posible pausar la reproducción de VLC cuando mis auriculares están desconectados? Puedo silenciar los altavoces a través de ALSA, pero quiero usar el disparador para detener la reproducción, como es habitual en los teléfonos inteligentes.
vlc
headphones
video-player
playback
HerHde
fuente
fuente
Respuestas:
Ok, entonces, en base a lo que he aprendido de aquí , estoy probando un nuevo enfoque, usando ACPI.
Cree una secuencia de comandos, para pausar y descomprimir VLC:
y coloque lo siguiente en este archivo:
Ahora creemos un activador de evento (reemplace
vim
con su editor de texto favorito):y agregue lo siguiente:
Finalmente, reinicie el demonio ACPI:
Creo que debería ser exactamente lo que necesita, sin necesidad de encuestas. El único inconveniente que puedo encontrar con esta implementación es en caso de que haya varios usuarios ejecutando VLC al mismo tiempo. Supongo que en ese caso, lo que puede suceder es que este enfoque pause aleatoriamente y reanude uno de ellos (o simplemente podría no funcionar).
Felicitaciones a @int_ua y @Sneetsher por proporcionarme conocimientos importantes sobre el manejo de eventos ACPI. También agradece a @ user3073656 por ayudar a simplificar el procedimiento.
fuente
grep -z USER /proc/$_pid/environ
para que funcione para todos los usuarios de la máquina (con una sola sesión / vlc en ejecución). Estaba buscando esa opción.Ok, entonces necesitarás hacer algunas cosas para esto:
Para (1) y (3): puede usar lo que se muestra aquí . Esta respuesta contiene un pequeño procedimiento para encontrar la diferencia entre un conector enchufado y desconectado, y un script que puede modificar para adaptarlo a su caso.
Para (2) y (4): debe usar la interfaz Dbus de VLC. El código relevante debería ser este:
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
Para pausa y reproducción respectivamente.
Ahora, sobre el guión. En su caso, debería verse más o menos así:
Agregue este script modificado a sus aplicaciones de inicio y estará listo. Creo que debería hacer lo que quisieras.
PD: tenga en cuenta que hay formas más eficientes de hacer esto, como usar
inotify
para detectar cambios de eventos (y tal vez incluso otros enfoques), pero este debería ayudarlo a comenzar (y los otros están por encima de mi nivel de experiencia y experiencia). Supongo que puede comenzar con este enfoque "hackish" y construir desde aquí.fuente
sleep 0.25
al final, que es un cuarto de segundo de retraso. Eso facilita la CPU y todavía funciona lo suficientemente rápido. A veces también uso esto en mis propios guiones