news 2026/9/2 11:28:07

SmartTube 源码跑通:TV 端免 GMS 播放器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SmartTube 源码跑通:TV 端免 GMS 播放器

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 TVSmartTube
Google 服务必须 GMS不依赖(F-Droid 版)
广告内嵌广告无广告 UI + SponsorBlock 跳段
画质上限受会员/设备限制8K、60fps、HDR
旧设备逐步弃用下探到 Android 4.3
安装渠道Play 商店侧载 APK / ADB

本地模块替代远程依赖是怎么做的

大白话:别人发版你只能跟着改,自己持有源码就能按电视盒子的口味调。

具体在 模块拼装入口 里,它把exoplayer-amzn-2.10.6和改过的leanback-1.0.0fragment-1.1.0都当作本地 project 引入,而不是走远程 Maven。

根 构建文件 用exclude顶掉官方androidx.leanbackandroidx.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不同,stfdroidminSdk提到 21、不打包 Firebase。想发无 GMS 版本就编stfdroid
  • 视频预设:设置里的 video preset 决定画质上限("none" 会记住上次选择,否则按预设挑,缺档自动降档)。老盒子播不了就降分辨率或换 VP9/AVC。
  • 信息流清洗:DeArrow 处理器 与 SponsorBlock 控制器两组开关,分别管"去标题党封面"和"跳赞助段"。

把旧电视变成无广告追剧终端

数据流很短:

  1. 遥控器在首页选视频,浏览模块拉取 DASH 清单。
  2. ExoPlayer 按设备解码能力挑一条流(能 AV01 就 AV01,否则 VP9/AVC)。
  3. 渲染时 SponsorBlock 对照社区时间戳自动跳过赞助段。
  4. 卡片信息经 DeArrow,把夸张标题/封面换成干净版本。
  5. 全程无 GMS,直播弹幕由内置 chatkit 模块渲染。

编译崩溃、AV01 播不了,常见三个坑

  • Gradle 构建后 App 打开闪退 / NoSuchMethod:JDK 用了 15 以上。解法固定用 OpenJDK 14。
  • 提示 "profile is not supported" 或 AV01 不动:设备没有 AV1 硬解。解法是在播放器左下角 HQ 里选 VP9 或 AVC。
  • 视频反复转圈缓冲:网络或 DNS 被限速。解法是降一档分辨率、把 buffer 调高,必要时换加密 DNS。

今晚就能跑起来的两件事

  1. 执行上面那条./gradlew clean installStstableDebug,把 stable 版装进盒子,放一集 8K 试解码。
  2. 明早进设置把视频预设锁到 VP9、buffer 调 high,再开一局直播看弹幕。

【免费下载链接】SmartTubeBrowse media content with your own rules on Android TV项目地址: https://gitcode.com/GitHub_Trending/smar/SmartTube

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 11:26:39

Python背记手册:64页高效掌握核心语法与实战技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 11:25:39

C#运算符实战指南:从基础概念到避坑技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 11:24:25

yuzu 配置实战:三步跑起来,两招稳到 60 帧

yuzu 配置实战&#xff1a;三步跑起来&#xff0c;两招稳到 60 帧 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu 是一款任天堂 Switch 开源模拟器&#xff0c;能把你的 Switch 游戏搬上电脑、手机和 Linux 桌…

作者头像 李华
网站建设 2026/9/2 11:24:06

UART0外部振荡器配置实战:解决串口乱码与时钟精度问题

简介&#xff1a;这是一份围绕EFM8SB10F8G微控制器开展UART0串口通信的工程源码包&#xff0c;适合正在学习8051内核、Silicon Labs低功耗芯片及Keil MDK环境的开发者参考。资源解决了“如何用外部12MHz晶振作为系统时钟&#xff0c;并完成UART0初始化与收发”这一常见问题&…

作者头像 李华
网站建设 2026/9/2 11:23:52

MATLAB实现自适应动态规划:从HDP架构到倒立摆控制实战

简介&#xff1a;本资源是一套面向控制理论研究者与自动化专业高年级本科生的自适应动态规划&#xff08;ADP&#xff09;MATLAB实现方案&#xff0c;聚焦解决传统动态规划在高维系统中面临的“维数灾难”问题&#xff0c;通过函数逼近&#xff08;如神经网络&#xff09;近似价…

作者头像 李华
网站建设 2026/9/2 11:23:42

WPS Office批量自动部署实战:静默安装与组策略分发指南

在企业做 IT 运维的同学&#xff0c;可能都经历过这样的时刻&#xff1a;新到一批办公电脑&#xff0c;需要在下班前全部装好办公软件&#xff0c;于是你抱着一块 U 盘&#xff0c;从这台机器跑到那台机器&#xff0c;双击安装包&#xff0c;一路点“下一步”&#xff0c;再手动…

作者头像 李华