以编程方式暂停视频播放器mpv

bob*_*lan 9 linux

我想知道是否有办法向Linux上正在运行的进程发送消息?

例如,是否可以以编程方式"暂停"启动的视频mpv.

her*_*ain 16

mpv远程控制(例如,从另一个终端会话),您也可以使用该选项启动它

--input-ipc-server=/tmp/mpvsocket
Run Code Online (Sandbox Code Playgroud)

并通过发出如下命令来控制它:

echo '{ "command": ["set_property", "pause", true] }' | socat - /tmp/mpvsocket
Run Code Online (Sandbox Code Playgroud)

查看man mpv(更多)更多细节.

编辑:另见 mpv --list-properties

edit2:我发现"切换"暂停/播放的最简单方法是

{"command": ["cycle", "pause"]}

  • 默认情况下,使用此选项 mpv 创建单个套接字,用于最后打开的 mpv 实例。要获得每个 PID 的多个套接字,请使用 [mpvSockets 插件](https://github.com/wis/mpvSockets) (2认同)

aud*_*ude 7

可以通过IPC控制mpv。从手册mpv(1)

--input-ipc-server=<filename>
       Enable the IPC support and create the listening socket at the given path.

       On  Linux and Unix, the given path is a regular filesystem path.
       On Windows, named pipes are used, so the path refers to the pipe namespace (\\.\pipe\<name>). If the \\.\pipe\ prefix is missing, mpv will add it automatically before creating the pipe, so --input-ipc-server=/tmp/mpv-socket and --input-ipc-server=\\.\pipe\tmp\mpv-socket are equivalent for IPC on Windows.

       See JSON IPC for details.
Run Code Online (Sandbox Code Playgroud)

几个例子:

$ echo 'cycle pause'   | socat - /tmp/mpv-socket
$ echo 'playlist-prev' | socat - /tmp/mpv-socket
$ echo 'playlist-next' | socat - /tmp/mpv-socket
Run Code Online (Sandbox Code Playgroud)

查看mpv(1)以了解更多信息。

也可以看看:


bob*_*lan 5

kill -s STOP $(pidof mpv)kill -s CONT $(pidof mpv)

或更好 :

xdotool key --window "$(xdotool search --class mpv)" p

键"P​​"默认设置为暂停视频.