JSON IPC
本节介绍 mpv 的 JSON IPC 接口。
IPC 配置
启用 IPC
bash
# 启用 JSON IPC
input-ipc-server=/tmp/mpv-socket
# Windows
input-ipc-server=\\.\pipe\mpv-socketIPC 选项
bash
# IPC 服务器
input-ipc-server=/tmp/mpv-socket
# IPC 超时
input-ipc-timeout=10IPC 命令
发送命令
bash
# 发送命令
echo '{"command": ["set_property", "volume", 80]}' | socat - /tmp/mpv-socket
# 获取属性
echo '{"command": ["get_property", "volume"]}' | socat - /tmp/mpv-socket
# 执行命令
echo '{"command": ["seek", 10]}' | socat - /tmp/mpv-socket命令格式
json
{
"command": ["command_name", "arg1", "arg2"]
}响应格式
json
{
"error": "success",
"data": 80
}IPC 命令列表
属性命令
bash
# 获取属性
{"command": ["get_property", "volume"]}
# 设置属性
{"command": ["set_property", "volume", 80]}
# 获取属性
{"command": ["get_property_string", "media-title"]}命令命令
bash
# 执行命令
{"command": ["seek", 10]}
# 播放控制
{"command": ["set_property", "pause", true]}
# 截图
{"command": ["screenshot"]}IPC 脚本
Python 脚本
python
import socket
import json
def send_command(command):
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect('/tmp/mpv-socket')
data = json.dumps({"command": command})
sock.send(data.encode())
response = sock.recv(1024)
sock.close()
return json.loads(response)
# 使用示例
result = send_command(["get_property", "volume"])
print(result)Node.js 脚本
javascript
const net = require('net');
function sendCommand(command) {
return new Promise((resolve, reject) => {
const client = net.createConnection('/tmp/mpv-socket', () => {
const data = JSON.stringify({ command });
client.write(data);
});
client.on('data', (data) => {
client.end();
resolve(JSON.parse(data));
});
client.on('error', reject);
});
}
// 使用示例
sendCommand(['get_property', 'volume']).then(result => {
console.log(result);
});IPC 调试
调试信息
bash
# 显示 IPC 信息
mpv --msg-level=all=v video.mp4
# 测试 IPC
mpv --input-ipc-server=/tmp/mpv-socket video.mp4IPC 测试
bash
# 测试 IPC 连接
echo '{"command": ["get_property", "volume"]}' | socat - /tmp/mpv-socket
# 测试 IPC 命令
echo '{"command": ["set_property", "volume", 80]}' | socat - /tmp/mpv-socketIPC 故障排除
常见问题
IPC 连接失败
- 检查 IPC 服务器配置
- 检查文件权限
IPC 命令不执行
- 检查命令格式
- 检查命令参数
IPC 响应异常
- 检查响应格式
- 检查错误信息
调试命令
bash
# 显示 IPC 信息
mpv --msg-level=all=v video.mp4
# 测试 IPC
mpv --input-ipc-server=/tmp/mpv-socket video.mp4