一个基于 Wails 框架构建的轻量级桌面视频播放器
TinyPlayer 是一个使用现代技术栈开发的跨平台桌面视频播放器:
- 后端: Go 1.23 + Wails v2.10.2
- 前端: Svelte + TypeScript + Vite
- 架构: 前后端分离,原生HTML5视频播放
- 支持多种视频格式 (MP4, WebM, OGG, MKV, MOV)
- 原生HTML5视频播放器,确保跨平台兼容性
- 内置HTTP文件服务器,绕过浏览器本地文件限制
- 智能缓存控制,确保新文件正确加载
- 播放/暂停功能
- 进度条拖拽定位
- 音量控制和静音
- 快进/快退 (±10秒)
- 全屏播放支持
- 现代化深色主题设计
- 响应式播放控制栏
- 平滑动画和过渡效果
- 鼠标悬停自动显示/隐藏控制栏
- 加载状态提示
- 跨平台支持 (Windows, macOS, Linux)
- 原生桌面应用体验
- 自定义应用图标
- 热重载开发支持
┌─────────────────┐ ┌─────────────────┐
│ 前端 (Svelte) │ │ 后端 (Go) │
│ │ │ │
│ • UI 组件 │◄──►│ • 文件选择 │
│ • 播放控制 │ │ • HTTP 服务器 │
│ • 状态管理 │ │ • 跨平台支持 │
└─────────────────┘ └─────────────────┘
│ │
└───────────────────────┘
Wails 桥接
- Go 1.23+
- Node.js 16+ (推荐 LTS 版本)
- Wails CLI v2.10.2
-
安装 Wails CLI
go install github.com/wailsapp/wails/v2/cmd/wails@v2.10.2
-
克隆项目
git clone <repository-url> cd TinyPlayer
-
安装前端依赖
npm install
启动开发服务器(支持热重载):
wails dev这将启动:
- Go 后端服务
- Vite 前端开发服务器
- 自动打开桌面应用窗口
- 浏览器调试地址: http://localhost:34115
构建生产版本:
wails build生成带签名的发布包:
wails build -pTinyPlayer/
├── app.go # Go 后端主要逻辑
├── main.go # Go 程序入口
├── wails.json # Wails 项目配置
├── go.mod # Go 模块依赖
├── build/ # 构建资源
│ ├── appicon.png # 应用图标
│ ├── windows/ # Windows 特定文件
│ └── darwin/ # macOS 特定文件
└── frontend/ # 前端源码
├── src/
│ ├── App.svelte # 主要 UI 组件
│ └── style.css # 样式文件
├── wailsjs/ # Wails 生成的绑定代码
├── vite.config.ts # Vite 配置
└── package.json # 前端依赖
-
启动应用
- 运行构建后的可执行文件
- 或在开发模式下运行
wails dev
-
导入视频文件
- 点击界面中的"打开文件"按钮
- 或使用控制栏中的文件夹图标
- 选择支持的视频文件格式
-
播放控制
- 点击播放按钮开始播放
- 使用进度条控制播放位置
- 调节音量或静音
- 使用快进/快退按钮
- 双击进入全屏模式
-
使用提供的图标生成工具:
# 打开浏览器图标生成器 start build/icon-generator.html -
或手动替换:
- 准备 256x256 的 PNG 图标
- 替换
build/appicon.png - 重新构建应用
- MP4 (推荐)
- WebM
- OGG
- MKV
- MOV
Q: 视频无法播放
- 确保文件格式受支持
- 检查文件是否损坏
- 查看控制台输出的错误信息
Q: 导入新文件后还是播放旧文件
- 这个问题已通过唯一URL生成和缓存控制解决
- 如果仍有问题,请重启应用
Q: 控制栏被遮挡
- 确保窗口大小足够
- 控制栏会在底部留有适当间距
在开发模式下,可以通过浏览器访问 http://localhost:34115 进行调试,并在开发者工具中查看详细日志。
欢迎提交 Issue 和 Pull Request 来改进 TinyPlayer!
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。