MPV tiene un servidor IPC (inter-process communication) que permite enviar comandos mientras el video está reproduciendo. Usamos socat para comunicarse con el socket.
sudo pacman -S socat
sudo apt install socat
Asegurate de tener también mpv instalado:
# Arch
sudo pacman -S mpv
mpv video.mp4 --input-ipc-server=/tmp/mpv.sock
Esto crea un socket en /tmp/mpv.sock para recibir comandos.
echo '{"command": ["keypress", "m"]}' | socat - /tmp/mpv.sock
echo '{"command": ["keypress", "space"]}' | socat - /tmp/mpv.sock
echo '{"command": ["get_property", "volume"]}' | socat - /tmp/mpv.sock
echo '{"command": ["set_property", "volume", 50]}' | socat - /tmp/mpv.sock
echo '{"command": ["get_property", "time-pos"]}' | socat - /tmp/mpv.sock
echo '{"command": ["seek", 60]}' | socat - /tmp/mpv.sock # ir a 1:00
echo '{"command": ["get_property", "duration"]}' | socat - /tmp/mpv.sock
echo '{"command": ["quit"]}' | socat - /tmp/mpv.sock
Los comandos siguen este formato:
{"command": ["nombre_del_comando", argumento1, argumento2, ...]}
| Comando | Descripción | Ejemplo |
|---|---|---|
keypress |
Envía una tecla | ["keypress", "m"] |
set_property |
Cambia una propiedad | ["set_property", "volume", 80] |
get_property |
Obtiene una propiedad | ["get_property", "time-pos"] |
seek |
Ir a posición (segundos) | ["seek", 120] |
#!/bin/bash
SOCKET="/tmp/mpv.sock"
case "$1" in
mute)
echo '{"command": ["keypress", "m"]}' | socat - $SOCKET
;;
pause)
echo '{"command": ["keypress", "space"]}' | socat - $SOCKET
;;
vol)
echo "{\"command\": [\"set_property\", \"volume\", $2]}" | socat - $SOCKET
;;
pos)
echo '{"command": ["get_property", "time-pos"]}' | socat - $SOCKET
;;
quit)
echo '{"command": ["quit"]}' | socat - $SOCKET
;;
*)
echo "Uso: $0 {mute|pause|vol <0-100>|pos|quit}"
;;
esac
Guardalo como mpvctl y usalo así:
chmod +x mpvctl
./mpvctl mute # silenciar
./mpvctl pause # play/pause
./mpvctl vol 50 # volumen al 50%
./mpvctl pos # ver posición actual
./mpvctl quit # cerrar mpv
| Tecla | Acción |
|---|---|
space |
Play/Pause |
m |
Mute |
f |
Fullscreen |
left/right |
Retroceder/Avanzar 5s |
up/down |
Volumen +/- |
q |
Quit |
--input-ipc-server