diff options
author | James Ross-Gowan <rossymiles@gmail.com> | 2016-03-23 23:01:57 +1100 |
---|---|---|
committer | James Ross-Gowan <rossymiles@gmail.com> | 2016-03-23 23:15:27 +1100 |
commit | a07832313d382c2a6fce9477ce1067f125d94a2a (patch) | |
tree | cbbf43caad5d8cb32d1838f61993c1b90ecad9e3 /DOCS/man/ipc.rst | |
parent | cd50ebba363315e15276e3b0895c33e85813fc4a (diff) | |
download | mpv-a07832313d382c2a6fce9477ce1067f125d94a2a.tar.bz2 mpv-a07832313d382c2a6fce9477ce1067f125d94a2a.tar.xz |
man: ipc: update for named pipe IPC on Windows
Diffstat (limited to 'DOCS/man/ipc.rst')
-rw-r--r-- | DOCS/man/ipc.rst | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/DOCS/man/ipc.rst b/DOCS/man/ipc.rst index e3ff1bd243..7a0ed69723 100644 --- a/DOCS/man/ipc.rst +++ b/DOCS/man/ipc.rst @@ -1,10 +1,10 @@ JSON IPC ======== -mpv can be controlled by external programs using the JSON-based IPC protocol. It -can be enabled by specifying the path to a unix socket using the option -``--input-unix-socket``. Clients can connect to this socket and send commands to -the player or receive events from it. +mpv can be controlled by external programs using the JSON-based IPC protocol. +It can be enabled by specifying the path to a unix socket or a named pipe using +the option ``--input-ipc-server``. Clients can connect to this socket and send +commands to the player or receive events from it. .. warning:: @@ -17,12 +17,12 @@ the player or receive events from it. Socat example ------------- -You can use the ``socat`` tool to send commands (and receive reply) from the +You can use the ``socat`` tool to send commands (and receive replies) from the shell. Assuming mpv was started with: :: - mpv file.mkv --input-unix-socket=/tmp/mpvsocket + mpv file.mkv --input-ipc-server=/tmp/mpvsocket Then you can control it using socat: @@ -46,6 +46,31 @@ It's also possible to send input.conf style text-only commands: But you won't get a reply over the socket. (This particular command shows the playback time on the player's OSD.) +Command Prompt example +---------------------- + +Unfortunately, it's not as easy to test the IPC protocol on Windows, since +Windows ports of socat (in Cygwin and MSYS2) don't understand named pipes. In +the absence of a simple tool to send and receive from bidirectional pipes, the +``echo`` command can be used to send commands, but not receive replies from the +command prompt. + +Assuming mpv was started with: + +:: + + mpv file.mkv --input-ipc-server=\\.\pipe\mpvsocket + +You can send commands from a command prompt: + +:: + + echo show_text ${playback-time} >\\.\pipe\mpvsocket + +To be able to simultaneously read and write from the IPC pipe, like on Linux, +it's necessary to write an external program that uses overlapped file I/O (or +some wrapper like .NET's NamedPipeClientStream.) + Protocol -------- @@ -102,7 +127,7 @@ break character (``\n``). If the first character (after skipping whitespace) is not ``{``, the command will be interpreted as non-JSON text command, as they are used in input.conf -(or ``mpv_command_string()`` in the client API). Additionally, line starting +(or ``mpv_command_string()`` in the client API). Additionally, lines starting with ``#`` and empty lines are ignored. Currently, embedded 0 bytes terminate the current line, but you should not |