← 全部文章

我做了个播放器:115 / PikPak + JavBus 脚本提交 + 本地双语字幕

最近在做一个播放器,叫 M1Player。

我想把几个操作串起来:电脑上找内容,选好版本提交到网盘,然后拿起手机就能看。遇到没字幕的,再让手机识别对白、翻译成中文。

现在 App 能直接连接自己的 115、PikPak 和局域网 SMB。我还配了一个油猴脚本,在 JavBus 等支持的页面上可以搜索磁力、比较版本,点一下提交给手机连接的网盘。

字幕这块,我做了本地和云端两种方式。本地识别和翻译就在手机上跑,不扣云端字幕时长,后面展开说。

官网:player.malu.moe

目前我在官网放了 Android 0.1.2,Android 8.0 及以上的 64 位 ARM 手机可以安装。iOS 版也在做,公共下载入口会随发布进度更新到官网。

我目前做了哪些功能

  • 网盘和 SMB 播放:手机直接连,不用另外开着一台 Mac 做中转。
  • 媒体库整理:扫描文件、识别文件名里的作品编号、查询资料和封面。可以按文件名、编号或演员搜索,也能收藏。
  • 续播和播放操作:记住上次看到哪里,支持横竖屏,调节进度、亮度和音量。
  • 双语字幕:原文、中文、双语都能选,字幕可以在本地生成,也可以用云端。
  • 浏览器提交任务:电脑上选磁力,手机接收后提交到 115 / PikPak,最近任务里能看结果。

收费范围也提前说一下:基础版可以浏览和播放单个来源,多来源聚合这些进阶功能放在 Pro 里。本地字幕不扣云端字幕时长,不用为了本地翻译买时长包。

怎么开始用

我把流程列一下,先从手机这边开始:

  1. 下载、安装 App,打开媒体库里的来源管理。
  2. 连上自己的网盘或 SMB。115 用官方 App 扫码登录;PikPak 播放走官方 WebDAV,需要相应会员和 WebDAV 凭据;SMB 填自己的共享地址和账号。
  3. 第一次先等它扫描完,就可以搜索、收藏、打开视频了。刚提交下载的内容,要等网盘下载完成,再被媒体库扫描到,才会出现在列表里。

如果只是播放自己的内容、用本地字幕,可以先不登录字幕账户。要用浏览器配对或者云端字幕,再登录 M1Player 账号:Android 用邮箱验证码,iOS 用 Apple 账号。这个账号和网盘账号是分开的。

JavBus 上的脚本怎么用

这部分我做的是「网页选磁力 → 手机接收 → 提交网盘」,安装、配对一次,后面就可以直接点按钮。

1. 先装油猴,再装脚本

电脑浏览器先装 Tampermonkey(油猴),然后打开这个链接,在油猴页面点安装:

安装 M1Player 浏览器提交脚本

我也把安装入口放在了官网配对页。装完刷新一下网页,确认脚本已启用。如果之前装过旧版 M1Player 改版脚本,先停用旧版,不然可能会出现两套按钮。

官网安装与浏览器配对入口
这是官网配对页,截图时还没装脚本,所以这里显示的是安装提示。

2. 扫个码,把浏览器和手机连起来

  1. 手机 App 登录 M1Player 账号,连好要用的网盘。
  2. 进账户页的「浏览器提交网盘」,开启对应网盘的本机接收。Android 上的按钮叫「启用 115 接收」或「启用 PikPak 接收」。
  3. 电脑打开支持的网页,在油猴菜单里点 「连接 M1Player 手机(显示二维码)」,也可以从官网配对页发起。
  4. 手机在「浏览器提交网盘」里打开扫码入口,扫电脑上的二维码,确认连接。

PikPak 这里多说一句:能播放,不等于已经有云下载权限。播放用 WebDAV;要提交下载,需要在 App 里连接一个带「云下载」权限的个人访问令牌(PAT),WebDAV 密码不能直接拿来用。

我把网盘登录凭据留在手机上,配对只是让这个浏览器有权限投递任务。

3. 回到 JavBus,选好版本点提交

刷新 JavBus 详情页,磁力列表旁边就能看到 「提交 115」和「提交 PikPak」。看一下大小、画质和字幕标记,选好版本,点对应的网盘。

JavBus 磁力列表中的 115 与 PikPak 提交按钮
这张图只演示按钮和列表,没有实际提交下载任务。

这时候手机要让 App 保持在前台,它会接收任务,再提交给网盘。结果可以在 App 的最近任务里看,油猴菜单里也有对应网盘的最近任务入口。

这里有个容易混淆的地方:排进队列、网盘接收、下载完成,是几个不同的状态。脚本显示提交成功,说明网盘接收了任务,具体下到哪里了,还是要看网盘。App 切到后台或者关掉后,任务会等下次打开再处理。如果显示结果待确认,先去网盘看一眼,再决定要不要重试。

4. 我还给脚本加了几个小功能

  • 多搜几个站:支持 BTDig、Sukebei、Bitsearch,搜到的结果会和页面原来的磁力合并、去重。
  • 帮忙排一下版本:按完整编号、画质标注、大小和中文版本信息排序,比较起来方便一点。
  • 少翻几次页:滚动加载后续页面,过滤 VR 和重复卡片,打开过的详情页也会做标记。
  • 提醒库里已经有了:在 App 开启「同步库中番号」,配对的浏览器就能标记已有作品。这个功能需要同步作品编号,要不要开可以自己选。
详情页的磁力搜索面板
截图时刚好碰到 BTDig 限流,我保留了 JavBus 原来的结果,也留了切换搜索站点的按钮。外部搜索能不能用,还是会受这些站点当时的状态影响。

再聊聊本地翻译

这块也是我比较想让大家试试的功能。

没有现成字幕时,我会让 App 提取播放位置附近的音频,先识别出原文,再翻译成中文,按时间显示到播放器里。选本地模式的话,识别和翻译都在手机上跑。

Android

Android 上我把入口放在了 「账户 → 字幕生成」:

  1. 选「本地」,再选影片的原声语言,目前有日语、英语、韩语和普通话。
  2. 点「下载或检查本地模型」。第一次要下载约 57 MB 的离线语音模型,再加上对应的翻译模型。
  3. 等模型准备好,开启「播放时自动生成」,然后打开影片。

这个模式不用登录字幕账户,也不扣云端余额。不过速度得看手机性能,取音、识别、翻译都需要一点时间,不能做到对白一出口就立刻逐字显示。

Android 0.1.2 本地字幕设置
这是 Android 0.1.2 的设置界面,选了本地模式,还没下载模型。

iOS

iOS 这边我接的是 Apple 的本地识别和翻译。在 「账户 → 字幕设置」 里选 「Apple 本地」,选好原声语言,按提示下载语言包就行。需要 iOS 26 或更新版本,具体还要看设备和系统对该语言的支持情况。

我也做了「自动(优先本地)」:语言包准备好了就先用本地。本地用不了时,只有你开了云端字幕权限、账户也可用,才会走云端。

iPhone 上的本地字幕与语言包设置
这是我之前在 iPhone 上测试时的设置截图,语言包已经装好了。图里的贡献开关是可选的,下面说一下。

本地、云端和字幕贡献,分别怎么算

单纯用本地识别和翻译,不扣云端时长,音频也不需要发给字幕服务。

另外,我在 iOS 上做了一个可选的 「贡献本地翻译字幕,赚取时长」 开关。主动打开后,会上传生成的字幕和短音频,审核采纳后供其他用户共用,同时奖励云端字幕时长。不开这个开关,就不会因为字幕贡献上传这些内容。

云端模式则需要登录、主动开启,会上传播放附近的短音频,扣账户里的字幕时长。同账号已有缓存可以复用,生成失败会退回预扣。我给首次登录留了 60 分钟体验,正式购买有没有开放,可以看服务状态和 App 里的提示。

播放器的日中双语字幕排版
这张我用的是测试视频和测试字幕,主要给大家看双语字幕怎么摆,不是识别、翻译效果的实测图。

效果这块我也不想说满:本地和云端都会有识别、翻译错误,背景音乐、几个人一起说话、声音太小都会影响结果。还有,本地字幕可以在设备上处理,但网盘视频本身还是要联网播放。

想试试的话,入口在这里

官网:M1Player

Android 当前版本:下载 0.1.2 APK

浏览器脚本:安装脚本 · 扫码配对

帮助:使用指南 · 当前开放状态

我还在继续改,想找一些有 115 / PikPak 或 SMB 片库的朋友试试。

尤其想听听:网盘连接顺不顺、脚本提交方不方便、哪些格式播放有问题,以及本地字幕在你手机上跑得怎么样。Android 这块还需要更多真机和真实对白的反馈,iOS 和 Android 目前也还没做到每个功能都一样。

有问题可以在文章下留言,或者用官网的反馈入口。带上设备型号、系统和 App 版本、复现步骤、错误提示,我会比较好排查。

最后补一句:我做的是播放器和整理工具,内容需要用自己有权访问的来源,网盘会员和第三方服务费用另算。

聊两句

评论使用 GitHub 账号,点击后加载。