2025–2026 · 桌面工具
MT-Player 多屏播控播放器
给双屏和多屏场景写的播放工具:主窗口管列表和控制,媒体全屏投到另一块屏幕上,也能交给 REST API 或 AI 助手远程操作。
做了什么
一个 PyQt6 写的播放器,解决的是展会、监控、广告轮播、图片展示这类场合的老问题:一块屏给观众看,另一块屏留给自己操作。
程序自动识别所有连接的显示器,选中后即时预览,然后把视频或图片全屏投到指定那块屏上。视频支持 MP4、MKV、AVI、MOV、WMV、FLV、WebM,图片支持 PNG、JPG、JPEG,可以整个文件夹批量导入并自动分类。播放控制是最普通的那一套:暂停继续、上一个下一个循环切换、静音、播完自动续播。
现场跑出来的几个细节
这些都不是设计时想到的,是用的时候被绊了才补的:
- 投放屏和应用屏必须不同,程序里做了硬性防护。投到自己正在操作的那块屏上,界面会被自己盖住,只能盲摸退出。
- 损坏文件自动跳过,不弹窗、不卡死。轮播时中间夹一个坏文件,整场就停在那儿了。
- 持久化记住上次加载的列表,重启直接可用。现场重开一次程序还要重新拖一遍文件,很浪费时间。
远程控制和安全
除了 GUI,还有两条远程通道:一套 REST API 覆盖投放、播放、文件、屏幕全部功能,以及一个 MCP 服务器(22 个工具),让 Claude Desktop 这类 AI 助手直接控制播放。加 --headless 可以完全无界面跑成后台服务。
开放接口就得管好口子,所以:API 默认只监听 127.0.0.1,外部访问不到;要走局域网必须用 --token 设鉴权令牌,所有写操作端点校验 Authorization: Bearer <token>;WSGI 用 waitress 而不是 Flask 自带的开发服务器。
现在的状态
到 v3.2.0,从 2025 年底的初版一路改过来。这一版做的是架构重构——MediaLibrary 统一数据模型加 PlayerController 跨线程控制层——顺带把界面换成暖调主题,亮色是陶土橙配象牙白,暗色沿用同一个强调色,图标全部换成 SVG 线性图标并支持 hover 变色。