Skip to content

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

抖仙人

抖仙人图标

面向抖音 Android 客户端的 LSPosed Modern API 102 纯净播放模块。播放视频时只保留视频画面, 暂停后恢复完整界面,并支持下载当前无水印视频或 MP3 音频和自定义内容跳过规则。

主要功能

  • 功能总开关:关闭后停止所有模块功能,并恢复抖音原有界面和操作;各子开关配置保留。
  • 独立的“沉浸式播放”开关:关闭后保留原界面,内容过滤、双击拦截和暂停下载仍可使用。
  • 可选“禁用屏幕双击”:拦截视频画面的原生双击事件,保留单击、滑动及侧边长按。
  • 播放视频时隐藏视频画面以外的抖音界面和系统栏。
  • 沉浸播放时屏蔽隐藏按钮及其子控件的触摸响应;点击原按钮位置也只会暂停并恢复完整界面。
  • 保留侧面长按的原生快进/快退手势及上下滑动切换视频,屏蔽中间长按菜单。
  • 可选择在纯净播放时保留抖音原生弹幕,关闭后仍只显示视频画面。
  • 暂停视频时立即恢复完整界面和视频页原始布局,避免介绍被底部菜单栏遮挡;继续播放后再次进入纯净模式。
  • 暂停后在右侧操作栏顶部显示半透明下载按钮,点击可选择“视频(无水印 MP4)”或 “音频(MP3)”,保存到系统 Download 目录。
  • 可在模块设置页分别配置是否跳过广告、图文、直播和普通视频。
  • 支持按关键词匹配普通视频的标题或介绍,命中后自动切换到下一条;关键词忽略英文大小写, 可使用换行、逗号或分号分隔。
  • 默认跳过广告、图文和直播,保留普通视频;关键词默认为空。

兼容范围

项目 当前支持
LSPosed API Modern API 102
已验证抖音版本 39.7.0(versionCode 390701)
本次触摸回归验证 抖音 40.3.0(versionCode 400301)/Android 16
暂停布局回归验证 抖音 40.4.0(versionCode 400401)/Android 16
Android 9(API 28)及以上
默认作用域 com.ss.android.ugc.aweme
模块包名 com.zz.douyin
本次适配设备 抖音 40.5.0(versionCode 400501)/Android 16;1.5.1 已由用户完成实机测试并确认发布
模块版本 1.5.1

模块基于抖音 39.7.0 的运行时结构适配,并针对 40.5.0 补充双击拦截。抖音升级后,播放器类、数据模型或界面层级可能变化, 届时需要重新适配。

安装

  1. 从 dist 目录下载最新版 douxianren-lsp-api102-v1.5.1.apk。
  2. 在手机上安装 APK。
  3. 在 LSPosed 中启用“抖仙人”模块。
  4. 保持默认作用域“抖音”,然后强制停止并重新打开抖音。

从 1.4.1 起模块包名调整为 com.zz.douyin。它会作为新应用与旧包名版本并存,升级后请在 LSPosed 中重新启用新包名模块并确认作用域。

最新版 APK 的 SHA-256:

76DF02AFC49DA67D5D3C67D636BFB4B86868263A309C7CE5E599490ED8296E4E

使用方式

  • “功能总开关”和“沉浸式播放”默认开启,“禁用屏幕双击”默认关闭。关闭总开关时, 内容过滤、自动切换、沉浸隐藏、手势拦截和下载入口全部停止生效;后台 MP3 转换会取消。
  • 单独关闭“沉浸式播放”只恢复抖音原有界面,不影响其他功能。开启时“播放弹幕”设置才影响画面。
  • 正常播放视频时,模块自动进入纯净播放模式;可在模块设置页开启或关闭“播放弹幕”。
  • 点击视频暂停后,完整界面与右侧下载按钮会恢复显示。
  • 沉浸播放时,在屏幕左右各四分之一范围长按可继续使用抖音原生快进/快退手势; 隐藏的点赞、评论、收藏、分享、导航等按钮不会响应点击,暂停恢复界面后可正常使用。
  • 打开“抖仙人”应用,可分别开关播放弹幕,以及广告、图文、直播和视频过滤;设置通过 LSPosed Remote Preferences 同步到抖音进程。
  • 在“视频关键词”中填写不想观看的词语并保存,普通视频的 item_title、title 或 desc 包含任意关键词时会自动跳过。
  • 点击“下载”按钮选择视频或音频。音频从当前视频的完整音轨解码为 PCM 后编码为 MP3, 保留当前视频实际声音;不直接下载背景音乐,也不通过修改扩展名伪装格式。
  • 下载和转码在后台执行,开始、转换阶段及完成结果通过 Toast 提示。失败时清理未完成文件。
  • 下载完成的文件位于系统 Download 目录。

实现说明

  • 播放状态通过 TTVideoEngine、TTVideoEngineImplV2 及其 VideoEngineListener 回调进行跟踪。
  • 视频地址依次从 play_addr、play_addr_h264、play_addr_bytevc1 中选择, 不使用带水印的下载地址链。
  • 广告按当前视频数据模型中的广告字段识别;无论广告是否带可播放视频, 都会自动切换到下一条内容,同时不会受预加载广告容器影响而误跳正常视频。
  • 直播使用抖音 39.7.0 Aweme.isLive() / awemeType=101 识别;关键词读取 item_title、title 和 desc,仅应用于普通视频,不跨类型覆盖广告、图文或直播开关。
  • 界面处理在运行时定位当前 Activity 中的播放器视图及右侧操作栏,不依赖容易变化的资源 ID。
  • 滑动切换视频时使用绘制前隐藏守卫,并在新渲染层接管前持续保持纯净界面,避免控件闪烁。
  • 触摸在分发到隐藏子控件前被过滤,只放行原生 LongPressLayout 及其祖先路径;已开始的 视频手势继续接收移动、松手及取消事件,避免切换渲染层时卡在快进状态。
  • 1.5.1 修复双击拦截:抖音 40.5.0 的信息流自行识别双击,模块通过 FeedComponentGroup.interceptDoubleClick 消费双击,阻止后续点赞和爱心动画, 保留原本的单击取消与双击状态。系统 GestureDetector 路径也独立拦截,覆盖父容器的手势分发。
  • Android 10 及以上通过 MediaStore.Downloads 保存文件;较低版本使用 DownloadManager 保存视频,音频写入公共 Download 目录(需要抖音已有存储权限)。
  • 音频使用 Android MediaExtractor / MediaCodec 解码及 jump3r 1.0.5 的 Java LAME 核心编码, 不依赖系统 MP3 编码器或额外安装转码软件。单声道目标 128 kbps,双声道目标 192 kbps; 无音轨、异常源或不支持的音频格式会提示失败。临时视频和转码文件会在完成或失败后清理。
  • jump3r 采用 LGPL 2.1 或后续版本,许可证和对应源代码链接随 APK 放在 assets/licenses/ 中。

本地构建

构建环境:

  • JDK 21(源码兼容 Java 17)
  • Android SDK 37
  • PowerShell 或其他可运行 Gradle Wrapper 的终端

执行完整检查和发布构建:

.\gradlew.bat clean lintRelease test assembleRelease

Gradle 中间产物会写入系统临时目录下的 douyin-immersive-gradle/app,最终构建产物位于该目录的 outputs/apk/release 下。仓库中经过验证、可直接安装的版本保存在 dist 目录。

交流与支持

项目结构

app/src/main/java/com/zz/douyin/
├── FilterPreferences.java
├── MainActivity.java
├── ModuleApplication.java
└── hook/
    ├── AudioTranscoder.java
    ├── DouyinModule.java
    ├── DoubleTapGuard.java
    ├── FeedContentTracker.java
    ├── ImmersiveUi.java
    ├── Mp3Encoder.java
    ├── PlaybackState.java
    ├── PlayerHooks.java
    └── VideoDownloader.java

运行日志标签为 DouyinImmersive,可通过以下命令查看:

adb logcat -s DouyinImmersive

About

抖仙人:抖音 Android 纯净播放、内容过滤与无水印下载 LSPosed Modern API 102 模块

Topics

Resources

Stars

43 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages