Python调用mpv的Unix Socket IPC接口超时无响应问题求助
问题根因
mpv的Unix Socket IPC协议要求每条JSON命令必须以**换行符\n**作为结束标识,你的Python代码发送的命令末尾没有添加换行符,mpv会认为命令还未传输完成,因此不会执行暂停操作,也不会返回响应,最终导致脚本接收超时。
你在命令行使用echo测试时功能正常,是因为echo默认会在输出内容末尾自动追加换行符,发送的内容符合mpv的协议要求。
修复方案
修改你定义命令字符串的代码,在JSON末尾添加\n即可:
# 修正前 # message = '{ "command": ["set_property", "pause", true] }' # 修正后 message = '{ "command": ["set_property", "pause", true] }\n'
如果需要更高的稳定性,还可以增加两个优化操作:
- 发送完命令后调用
s.shutdown(socket.SHUT_WR)主动关闭套接字的写端,避免半连接状态导致的异常 - 接收返回内容时按换行符拆分结果,避免多条响应拼接的情况
内容的提问来源于stack exchange,提问作者Dfr
相关产品推荐
相关产品推荐

