SmartTube 源码跑通:TV 端免 GMS 播放器
【免费下载链接】SmartTubeBrowse media content with your own rules on Android TV项目地址: https://gitcode.com/GitHub_Trending/smar/SmartTube
在 Android 4.3 的旧电视盒上放 8K 视频、HDR 和直播弹幕,还要绕开 Google 服务——SmartTube 是一个跑在 Android TV 上的开源 YouTube 播放器,源码把播放器引擎、数据接口和 UI 拆成本地模块自己拼装。
SmartTube 和官方客户端差在哪
它不是换个皮的网页,而是一个完整 App:自己持有 ExoPlayer 的 Amazon 移植版源码,把信息流、播放、搜索都接管过来,再按遥控器交互重画界面。
| 维度 | 官方 YouTube TV | SmartTube |
|---|---|---|
| Google 服务 | 必须 GMS | 不依赖(F-Droid 版) |
| 广告 | 内嵌广告 | 无广告 UI + SponsorBlock 跳段 |
| 画质上限 | 受会员/设备限制 | 8K、60fps、HDR |
| 旧设备 | 逐步弃用 | 下探到 Android 4.3 |
| 安装渠道 | Play 商店 | 侧载 APK / ADB |
本地模块替代远程依赖是怎么做的
大白话:别人发版你只能跟着改,自己持有源码就能按电视盒子的口味调。
具体在 模块拼装入口 里,它把exoplayer-amzn-2.10.6和改过的leanback-1.0.0、fragment-1.1.0都当作本地 project 引入,而不是走远程 Maven。
根 构建文件 用exclude顶掉官方androidx.leanback和androidx.fragment,换成仓库内自维护的版本;引擎封装在 播放器引擎目录,对 DASH 流做错误兜底和轨道选择。
从 clone 到装进电视盒只需三条命令
环境一句话:OpenJDK 14(更新 JDK 会让 App 崩溃)+ Android SDK 34 + 一台能被 adb 连上的 Android TV 或盒子。
下面这条命令拉取仓库、同步子模块、编译 stable 变体并直接装进已连接的设备:
git clone https://gitcode.com/GitHub_Trending/smar/SmartTube cd SmartTube git submodule update --init adb connect <设备IP> ./gradlew clean installStstableDebug装好后打开 App 就能浏览、搜索、播放,看到的第一帧就算跑通。
改这三个地方,播放行为立刻不同
- 应用变体:变体定义 里有
stbeta / ststable / stfdroid,三者applicationId不同,stfdroid的minSdk提到 21、不打包 Firebase。想发无 GMS 版本就编stfdroid。 - 视频预设:设置里的 video preset 决定画质上限("none" 会记住上次选择,否则按预设挑,缺档自动降档)。老盒子播不了就降分辨率或换 VP9/AVC。
- 信息流清洗:DeArrow 处理器 与 SponsorBlock 控制器两组开关,分别管"去标题党封面"和"跳赞助段"。
把旧电视变成无广告追剧终端
数据流很短:
- 遥控器在首页选视频,浏览模块拉取 DASH 清单。
- ExoPlayer 按设备解码能力挑一条流(能 AV01 就 AV01,否则 VP9/AVC)。
- 渲染时 SponsorBlock 对照社区时间戳自动跳过赞助段。
- 卡片信息经 DeArrow,把夸张标题/封面换成干净版本。
- 全程无 GMS,直播弹幕由内置 chatkit 模块渲染。
编译崩溃、AV01 播不了,常见三个坑
- Gradle 构建后 App 打开闪退 / NoSuchMethod:JDK 用了 15 以上。解法固定用 OpenJDK 14。
- 提示 "profile is not supported" 或 AV01 不动:设备没有 AV1 硬解。解法是在播放器左下角 HQ 里选 VP9 或 AVC。
- 视频反复转圈缓冲:网络或 DNS 被限速。解法是降一档分辨率、把 buffer 调高,必要时换加密 DNS。
今晚就能跑起来的两件事
- 执行上面那条
./gradlew clean installStstableDebug,把 stable 版装进盒子,放一集 8K 试解码。 - 明早进设置把视频预设锁到 VP9、buffer 调 high,再开一局直播看弹幕。
【免费下载链接】SmartTubeBrowse media content with your own rules on Android TV项目地址: https://gitcode.com/GitHub_Trending/smar/SmartTube
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考