返回目录
开源项目其他开源工具类新手

p2p-player

面向 Windows 的本地优先 P2P 流媒体播放器,支持 Magnet 磁力链接和 .torrent 文件,基于 libtorrent 与 libmpv 实现边下边播。

0 次阅读2026/08/19 发布
p2p-player 来源图片

社区作者 · 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 install
命令
pnpm test
命令
pnpm build
命令
cd src - tauri
命令
cargo test
命令
cd ..

. / 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 ,并要求随机访问令牌。
  • “移除任务”与“删除下载文件”保持分离,避免误删用户数据。

来源教程配图

P2P Player 图标
配图 1 · P2P Player 图标查看原图
P2P Player 主界面
配图 2 · P2P Player 主界面查看原图
下载管理
配图 3 · 下载管理查看原图
播放器
配图 4 · 播放器查看原图
媒体库
配图 5 · 媒体库查看原图
设置
配图 6 · 设置查看原图
字幕管理
配图 7 · 字幕管理查看原图

适用场景

学习研究
开源项目实践