Rust + Slint + libmpv 打造的全格式本地视频播放器。
多画面批量播放 · 字幕与音轨切换 · 画面滤镜 · A-B 循环 · 离线播放
启动后的默认界面。视频区为空,控制条在鼠标静止数秒后自动隐藏。
一个本地视频播放器:界面用 Slint 绘制,播放交给 libmpv。它主要解决一件市面产品普遍没做好的事——同时看多个视频:
- 多画面批量播放。拖入多个文件或整个文件夹,每个画面是独立播放会话,各自播放、暂停、 跳转、调音量,单格尺寸可以拖拽调整。
- 完整播放控制。精确跳转、倍速、缩放、旋转、画面平移、A-B 循环、章节跳转、时间轴标记点。
- 字幕与音轨。外部字幕加载,字幕延迟 / 缩放 / 垂直位置可调,音轨与声道模式即时切换。
- 画面工具。常用滤镜预设,以及亮度、对比度、饱和度调节。
- 轻量无边框。自绘标题栏与控制条,滚轮调音量,悬停呼出菜单。
- 离线播放,无遥测。本地媒体无需联网;可关闭自动更新检查。更新功能只访问 GitHub 获取版本和安装包,不上传媒体或播放历史。
完整功能与快捷键见文档站。
新的 0.0.1 发布流程使用 Velopack 1.2.161,目标资源如下;请以 Releases 实际已发布的文件为准。
| 平台 | 格式 | 应用内更新 |
|---|---|---|
| Windows x64 | YoYoVideo-stable-windows-x64-Setup.exe |
安装后支持 |
| macOS Apple Silicon / Intel | 各架构独立的 Portable.zip(内含 .app) |
支持 Velopack 应用包 |
| Linux x64 | YoYoVideo.AppImage |
可写位置的 AppImage 支持 |
| Linux x64 | YoYoVideo-linux-x64.deb |
包管理器或手动更新 |
通过“检查更新”打开更新窗口,可控制自动检查、下载、稍后安装或确认退出并安装。更新前验证签名和包哈希,不会在启动时偷偷安装未确认的缓存更新。设置和播放历史保留,更新后不自动开始播放。
- 普通开发构建、旧 NSIS/便携 ZIP 不能原地变成 Velopack 安装,请手动安装新发布格式。
- macOS 使用 ad-hoc 签名,未做 Apple 公证;它不等于 Apple Developer 签名,首次运行仍可能被 Gatekeeper 拦截。只从可信发布页下载,按系统正常流程处理,不建议关闭系统安全检查。
- AppImage 按 Ubuntu 22.04 构建,包含 libmpv 和可分发依赖;仍需要系统图形驱动、桌面及音频环境。Wayland/多画面原有平台限制不因换打包格式而消失。
开发验证状态、密钥管理和发布步骤见更新机制文档。
需要 Rust stable(edition 2024)。Windows 上还需要 Visual Studio Build Tools 的 C++ 工作负载
——libmpv-sys 链接时要用 MSVC 工具链。
# 测试:默认 feature 下不需要 libmpv
cargo test --workspace
cargo fmt --check
# 拉取播放内核(公开上游构建,按 sha256 固定)
pwsh -NoProfile -File scripts/fetch-runtime.ps1 -Platform windows-x64
# 带真实播放运行
pwsh -NoProfile -File scripts/dev-run.ps1
# 打包
pwsh -NoProfile -File scripts/package.ps1 -Platform windows-x64 -Configuration release -RequireRuntime用
dev-run.ps1而不是直接cargo run:mpv-runtime不能做成默认 feature,否则没有 libmpv 的 机器上cargo test会直接失败。dev-run.ps1用独立的--target-dir,避免普通cargo build把同一个二进制不带mpv-runtime重新编译并悄悄覆盖掉。
| 路径 | 作用 |
|---|---|
crates/yoyo-core |
播放会话与命令的领域逻辑,不依赖任何播放内核 |
crates/yoyo-mpv |
libmpv 适配层,把内核事件翻译成领域事件 |
apps/yoyovideo-desktop |
Slint 桌面应用、平台集成、打包产物 |
scripts/ |
运行时拉取、打包、校验、冒烟测试 |
runtime/manifest.toml |
播放内核的来源、版本与校验和 |
docs-site/ |
文档站(VitePress) |
yoyo-core 里没有一行 libmpv 代码,所以整个播放领域逻辑可以在没有内核的机器上被完整测试——
这是默认 cargo test 能跑起来的前提。
提交前请确保:
cargo fmt --check
cargo test --workspaceCI 会在 Windows / macOS / Linux 上检查 mpv-runtime feature 能否编译。
发版流程见文档站的发布页。
YoYoVideo 以 GPL-3.0-or-later 发布,完整文本见 LICENSE。
发行包内捆绑的播放内核来自 shinchiro/mpv-winbuild-cmake,
其中的 mpv 与 FFmpeg 均为 GPL-2.0-or-later。分发二进制时必须同时提供对应源码,
详见 LICENSES.md 与发行包内的 LICENSES/ 目录。
