视频默认播放速度调节 - 一个基于 Xposed 的 Android 模块,用于调节多个应用的视频播放速度。
🎉 这是我的第一个开源项目! 作为非计算机专业的学习者,感谢开源社区让我有机会参与项目开发和学习。如果这个项目对你有帮助,请给我一个 ⭐ Star,这将是对我最大的鼓励!
-
🚀 支持多款主流应用:
- 哔哩哔哩 (B站)
- 微信视频号
- 抖音
- 快手
- 微博
- 小红书
- Telegram
-
⚡ 智能速度调节
-
🎯 区分自动播放和手动设置
-
🔧 易于使用的设置界面
本项目基于原作者 V-E-O 的适配工作,支持以下应用版本:
| 应用 | 适配版本 | 兼容性 | 备注 |
|---|---|---|---|
| 哔哩哔哩 B站 | 7.25.0 / 3.20.4 (GP) | ✅ 兼容新老版本 | 推荐 Google Play 版本 |
| 微信视频号 WeChat | 8.0.69 (3022 GP) | ✅ OnePlus 13 适配 | 当前支持 Google Play 版本 |
| 抖音 Douyin | 25.6.0 | ✅ 兼容新版本 | 含极速版 |
| 小红书 | 8.23.0.5 | ✅ 兼容新老版本 | |
| 推特 Twitter/X | 11.81.0-release.0 / Piko v3.4.0 | ✅ 兼容新版本 | 推荐 Piko |
| 315.0.0.29.109 | ✅ 兼容新老版本 | 含 Instander | |
| Telegram | - | ✅ 不上混淆兼容 | |
| 微博 Weibo | 14.6.0 | ✅ 理论兼容新老版本 |
📝 说明: 本人主要使用的应用均来自 Google Play,因此主要考虑适配 Google Play 版本。如需其他版本适配,欢迎提 Issue 反馈!
💡 推特用户推荐: 如果你使用 Twitter/X,强烈推荐 crimera/piko 项目,它提供了 X/Twitter 的 Piko patches。
特别感谢原项目作者 V-E-O 的 biliSpeed 项目,为本项目提供了基础框架和灵感。
本项目在开发过程中得到了以下 AI 工具的大力支持:
- 🤖 Cursor - 智能代码编辑器
- 🧠 Claude Opus 4.5 - Anthropic 的大语言模型
作为非计算机专业的学习者,正是这些优秀的 AI 工具让我有机会深入理解代码逻辑、学习 Android Hook 原理,并最终将这个项目落地。感谢 AI 时代为普通人打开的技术学习大门!
感谢所有为 Xposed 生态做出贡献的开发者们!
本模块已提交至 Xposed-Modules-Repo,审核通过后可直接在 LSPosed 管理器中搜索安装。
前往 Releases 页面下载最新版本的 APK。
-
Fork 此项目 到您的 GitHub 账户
-
推送代码 到 main 分支,或手动触发 Actions:
- 访问您的仓库
- 点击 "Actions" 标签
- 点击 "Build Android APK" 工作流
- 点击 "Run workflow" 按钮
-
下载 APK:
- 工作流完成后,点击对应的运行
- 在 "Artifacts" 部分下载 APK 文件
如果您想构建签名版本的 APK:
-
生成密钥库:
keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
-
转换为 Base64:
base64 my-release-key.jks
-
设置 GitHub Secrets:
- 访问您的仓库 Settings > Secrets and variables > Actions
- 添加以下 secrets:
SIGNING_KEYSTORE_BASE64: 上面生成的 base64 字符串SIGNING_KEY_ALIAS: 您的密钥别名SIGNING_KEY_PASSWORD: 密钥密码SIGNING_STORE_PASSWORD: 密钥库密码
- Java JDK 17
- Android Studio Arctic Fox 或更高版本
- Android SDK API 33
# 克隆项目
git clone https://github.com/MarsGao/io.github.MarsGao.speed.git
cd io.github.MarsGao.speed
# 构建 Debug 版本
./gradlew assembleDebug
# 构建 Release 版本 (需要签名配置)
./gradlew assembleRelease-
启用 USB 调试:
- 手机设置 > 开发者选项 > USB 调试
-
安装 APK:
adb install -r app/build/outputs/apk/debug/app-debug.apk
-
激活模块:
- 打开 Xposed 管理器 (如 LSPosed)
- 启用 "视频调速 VideoSpeed" 模块
- 勾选需要 Hook 的目标应用
- 重启目标应用
-
设置速度:
- 打开 "视频调速 VideoSpeed" 应用
- 输入期望速度 (如 1.5)
- 点击设置
-
测试:
- 打开支持的应用播放视频
- 观察播放速度是否生效
- 框架: Xposed Framework
- 语言: Java
- 构建工具: Gradle
- CI/CD: GitHub Actions
在 LSPosed 管理器中,这类应用一般称为 模块,英文是 Module;不是插件(Plugin)。本项目在 LSPosed 中显示为 视频调速 VideoSpeed 模块。
截至 2026-06-01,原版 LSPosed 最新正式版仍为 1.9.2 (7024),但上游仓库已经归档。Android 15/16 设备后续如遇到 Xposed API 版本不足、模块提示需要 API 101、或系统服务 native hook 兼容问题,建议按维护文档迁移到仍活跃维护的 Vector / LSPosed 分支。
当前 Android 16 验证基线:
- OnePlus Ace 5: LSPosed
1.9.2 (7024) - Zygisk, Xposed API100 - OnePlus 13: LSPosed
1.11.0 (7209) - Zygisk, Xposed API100 - VideoSpeed:
1.2.1 - Twitter/X:
11.81.0-release.0/ Pikov3.4.0 - 已观察到
lspd与zygisk_lsposed正常运行 sing-box与OPCameraPro等模块提示需要 Xposed API101时,按维护文档评估是否迁移 Vector,不建议在核心功能正常时盲目替换框架。
项目采用多重 Hook 策略确保兼容性:
- 通用播放器 Hook: 动态查找播放器相关类
- 腾讯视频SDK Hook: 支持 TXVodPlayer、TXLivePlayer 等底层播放器
- 方法签名 Hook: 匹配所有可能的播放速度设置方法
- 系统MediaPlayer Hook: 作为兜底方案
- 智能判断: 通过调用栈分析区分自动播放和手动设置
🔧 Twitter/X Piko 适配更新
- 新增 Media3 / ExoPlayer 播放器 Hook,适配 X
11.81.0-release.0/ Pikov3.4.0 - 拦截
setPlaybackSpeed(1.0f)和setPlaybackParameters(...)的自动重置,恢复模块默认倍速 - 在
prepare、play、setPlayWhenReady(true)、setMediaItem(s)后补设播放速度 - 保留旧版 Twitter/X Hook 作为 legacy fallback,并增加异常隔离和日志前缀
🔄 重大更新:包名重构
- 包名变更:
com.veo.hook.bili.speed→io.github.MarsGao.speed- 符合 Xposed-Modules-Repo 提交要求
- 使用规范的命名空间避免冲突
- 项目名称统一: "Bili调速" → "视频调速 VideoSpeed"
- 更准确反映项目功能(支持多个视频应用,不限于B站)
- APK 命名:
biliSpeed_*.apk→VideoSpeed_*.apk
⚠️ 注意: 由于包名变更,升级前请先卸载旧版本,然后在 LSPosed 中重新激活模块。
🔧 微信视频号速度设置逻辑修复
- 问题诊断: 通过LSPosed日志分析,发现
isManualSpeedChange()函数存在误判问题- Hook成功且被正确触发
- 但
dispatch等常见Android方法名被误判为用户手动操作 - 导致自动速度设置被错误跳过
修复内容:
- ✅ 改进调用栈检测逻辑:
- 移除
dispatch等误导性关键词检测 - 仅检测明确的用户交互方法:
onClick,onTouchEvent,performClick - 添加调用栈日志输出,便于调试
- 移除
- ✅ 新增速度设置缓存机制:
- 使用
ConcurrentHashMap追踪每个播放器实例的速度状态 - 新增冷却期机制 (3秒),避免用户手动调整后被自动覆盖
- 智能判断:目标速度为1.0时不做修改
- 使用
- ✅ Telegram Hook 兼容性修复:
- 新增多版本方法签名兼容
- 支持
VideoPlayer.setPlaybackSpeed备选方案 - 修复
NoSuchMethodError异常
🔧 微信视频号 8.0.69 GP 兼容性修复
- ✅ 新增微信候选播放器类加载探针,记录 Finder、video、player、liteav、thumb、play 相关类命中
- ✅ 新增候选播放器类通用方法扫描,自动 Hook
setRate/setSpeed/setPlaySpeed/setPlaybackSpeed等 float 倍速方法 - ✅ 播放
start/play/resume/prepare后主动补设目标倍速 - ✅ LiteAV 路径不再只依赖入参
1.0f,普通播放初始化速度会自动纠正为目标倍速 - ✅ 收紧手动倍速判断,只有明确点击、触摸或速度 UI 调用栈才视为用户手动修改
🔧 微信视频号兼容性修复
- 问题诊断: 通过日志分析发现
FinderThumbPlayerProxy.setPlaySpeed虽然Hook成功,但从未被调用 - 根本原因: 微信视频号使用腾讯视频SDK (liteav) 作为底层播放器
新增功能:
- ✅ 新增腾讯视频SDK (liteav) Hook支持
TXVodPlayer.setRate- 点播播放器TXLivePlayer.setRate- 直播播放器- ExoPlayer 备用方案
- ✅ 新增播放开始时设置速度 (
startVodPlay、resume、start、play) - ✅ 新增系统
MediaPlayer.setPlaybackParamsHook作为兜底 - ✅ 扩展了播放器类列表,包括 Kinda 框架视频组件
- ✅ 增强日志输出,便于问题诊断
支持的播放器类:
- FinderThumbPlayerProxy, FinderVideoPlayer, FinderVideoCore
- SnsVideoPlayer, MMVideoPlayer, AppBrandVideoPlayer
- TXVodPlayer, TXLivePlayer (腾讯视频SDK)
- android.media.MediaPlayer (系统播放器)
- 初始微信视频号支持
- 多策略Hook架构
欢迎提交 Issue 和 Pull Request!
- 🐛 发现 Bug? 请提交 Issue
- 💡 有新想法? 欢迎讨论和建议
- 🔧 想要贡献代码? 欢迎提交 PR
本项目采用 GPL-3.0 许可证。
本项目仅用于学习和研究目的,请遵守相关法律法规。使用本模块造成的任何后果由使用者自行承担。
如果这个项目对你有帮助,请给我一个 ⭐ Star!
Made with ❤️ by MarsGao