p2p-player
面向 Windows 的本地优先 P2P 流媒体播放器,支持 Magnet 磁力链接和 .torrent 文件,基于 libtorrent 与 libmpv 实现边下边播。
社区作者 · zZz
它解决什么问题
P2P Player 是一款面向 Windows 的本地优先 P2P 流媒体播放器,当前版本 0.1.1 Alpha,仍处于早期开发阶段。支持导入 Magnet 磁力链接和本地 .torrent 文件,在分片下载过程中通过 HTTP Range 向 libmpv 提供边下边播能力。
核心特性包括:libtorrent 原生下载引擎(支持 DHT、LSD、UPnP、NAT-PMP、TCP 和 uTP);Tracker 自动补充、协议去重和失效节点容错;实时更新元数据、进度、速度、Peer、暂停/继续状态;基于分片优先级和截止时间的边下边播调度;仅绑定 127.0.0.
1 且带随机令牌的 HTTP Range 媒体服务;libmpv 原生播放、进度控制、音量、全屏和字幕轨道状态;SQLite 持久化任务、文件、恢复数据、播放历史和设置;异常退出恢复和快速恢复数据重建;深色/浅色主题,包含下载管理、媒体库、播放列表、字幕与设置页面;提供 Windows NSIS 安装包与便携版构建;无账户、无遥测,数据保存在本机。
技术架构上,React/TypeScript 界面通过 Tauri IPC 与 Rust 应用核心通信,Rust 核心连接 SQLite 和 libtorrent/libmpv 的 C ABI 封装,本机 HTTP Range 服务将数据提供给播放器,界面、下载引擎、播放器之间通过有界分片调度器隔离,内存占用不会随媒体大小线性增长。项目使用 React 19、TypeScript、Vite、Tauri 2、Rust、Tokio、Axum、rusqlite、libtorrent-rasterbar、libmpv 等。
数据隐私方面,不注册账号、不收集遥测、本地媒体服务仅监听 127.0.0.1 并要求随机令牌,移除任务与删除下载文件分离,避免误删用户数据。项目强调仅用于有权访问、下载和传播的内容,如自己创建的文件、公共领域作品、允许 P2
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
界面预览 下载管理 边下边播 媒体库 设置 字幕管理 截图使用内置展示模式和虚构的公开授权媒体名称生成,不包含真实磁力链接、用户目录、下载记录或个人信息。详见 截图展示模式 。
技术架构 flowchart LR UI[React / TypeScript 界面] -->|Tauri IPC 与事件| CORE[Rust 应用核心] CORE --> DB[(SQLite)] CORE --> TORRENT[libtorrent C ABI 封装] CORE --> RANGE[本机 HTTP Range 服务] RANGE --> MPV[libmpv 播放器] TORRENT --> STORAGE[(分片与媒体文件)] STORAGE --> RANGE Loading 关键边界:
更完整的模块说明请查看 ARCHITECTURE.md 。 技术栈
开发环境 推荐环境:
原生依赖布局和环境变量详见 docs/ENVIRONMENT.md 。 构建与测试
- Windows NSIS 安装包与便携版构建
- 无账户、无遥测,任务和播放数据保存在本机
- 界面只通过类型化 Tauri 命令和事件访问 Rust 核心。
- libtorrent 与 libmpv 隔离在窄 C ABI 后方,Rust 只持有不透明句柄。
- 播放器不直接读取 Torrent 引擎,只访问带令牌的本机 HTTP Range 地址。
- 播放窗口和跳转位置通过有界分片调度器设置优先级,内存占用不会随媒体大小线性增长。
- React 19、TypeScript、Vite
- Tauri 2、Rust、Tokio、Axum、rusqlite
- libtorrent-rasterbar 原生下载引擎
- libmpv 原生播放内核
- CMake、Ninja、MSVC、vcpkg
- Vitest、Cargo Test、CTest
- Windows 10/11 x64
- Node.js 与 pnpm
- Rust stable MSVC 工具链
- Visual Studio Build Tools(Desktop development with C++)
- CMake、Ninja、vcpkg
- libtorrent-rasterbar 与 libmpv x64 动态库
pnpm installpnpm testpnpm buildcd src - tauricargo testcd ... / scripts / build-native - poc.ps1
pnpm bundle:windows构建产物默认位于:
项目结构 p2p-player/ ├─ src/ React 界面与 Tauri 调用封装 ├─ src-tauri/src/ Rust 应用核心、数据库、调度与媒体服务 ├─ src-tauri/native/ libtorrent/libmpv C++ 封装与原生测试 ├─ src-tauri/icons/ Windows/macOS/商店图标资源 ├─ docs/ 分阶段设计、环境和截图说明 ├─ scripts/ 构建、测试和打包脚本 ├─ ARCHITECTURE.
md 架构约束 └─ IMPLEMENTATION_PLAN.md 实施计划 开发阶段文档
使用说明
P2P 下载速度由有效做种节点、节点上传带宽、运营商线路和本地网络共同决定。Tracker 返回候选地址不代表对方一定拥有完整数据;没有有效上传节点的资源无法由客户端凭空加速。 数据与隐私
合法使用 请仅将 P2P Player 用于你有权访问、下载和传播的内容,例如你自己创建的文件、公共领域作品、允许 P2P 分发的开源系统镜像,以及符合授权条款的 Creative Commons 媒体。用户应自行确认内容来源、所在地法律及相关授权条款。 第三方组件与许可 第三方依赖及其许可证见 THIRD_PARTY_LICENSES.md 。当前仓库尚未单独声明项目级开源许可证;公开可见不等于自动授予复制、修改或再分发权利。
- 安装包: src-tauri/target/release/bundle/nsis/
- 便携版: src-tauri/target/release/bundle/portable/P2P Player/
- Torrent 下载与快速恢复
- HTTP Range 服务
- Torrent 流媒体映射
- 流媒体分片调度
- libmpv 播放器
- SQLite 持久化与恢复
- Windows 打包
- 在首页粘贴 Magnet 链接,或导入本地 .torrent 文件。
- 在下载管理页查看元数据、进度、速度和有效 Peer。
- 取得元数据后选择媒体文件开始播放。
- 播放器会优先请求当前位置附近的分片;跳转时调度窗口自动移动。
- 任务暂停或应用退出时保存快速恢复数据,下次启动自动恢复。
- 不要求注册账号。
- 不收集遥测数据。
- 设置、任务和历史记录保存在应用数据目录下的 SQLite 数据库中。
- 本机媒体服务只监听 127.0.0.1 ,并要求随机访问令牌。
- “移除任务”与“删除下载文件”保持分离,避免误删用户数据。