SmartTube

2025-12-23

java

人生苦短,若虚度年华,则短暂的人生就太长了。——英国剧作家莎士比亚

SmartTube:在 Android TV 上,按你的规则畅看视频

SmartTube 是一个专为 Android TV 和电视盒子打造的开源高级播放器,它的定位非常明确:不依赖 Google 服务、没有广告、集成 SponsorBlock、支持 8K/60fps/HDR,并提供友好的遥控器操作体验。项目的描述很直白——“Browse media content with your own rules on Android TV”(在 Android TV 上按你的规则浏览媒体内容),这恰好概括了它的独特价值。

项目主页:SmartTube 仓库
官方网站:smarttubeapp.github.io
README(永久链接,便于核对信息来源):README.md@7847cf4

SmartTube 截图


重要安全提示(来自 README)

开发者曾公开说明其开发环境遭遇未知恶意软件感染,出于安全考虑共享了新的公钥与恢复备份的说明。应用本身使用一次性连接码,权限有限,但官方建议如有担忧可在 Google 账号安全页撤销第三方连接。

撤销路径(简要摘录):

  • 访问 myaccount.google.com/security
  • 找到 “Your connections to third-party apps & services”
  • 查看所有连接,定位 “YouTube TV” 或 “Google Drive”
  • 选择应用 → “Remove access”

请保留内置安全特性开启,以获得更好的保护。详细说明请以 README 最新内容为准。


为什么选择 SmartTube?

  • 没有广告,彻底干净
  • SponsorBlock 集成,自动跳过视频中的赞助商口播等片段(可自定义类别)
  • 播放器能力强:8K、60fps、HDR、可调倍速、画中画(PiP)、查看直播弹幕
  • 按键可自定义,适配遥控器操作
  • 不依赖 Google 服务(对许多盒子和定制系统很友好)
  • 活跃的国际社区支持(Telegram / Discord)

同时,README 也非常坦诚地列出了限制:

  • 仅支持 Android TV/电视盒子,不支持手机和平板
  • 评论功能不稳定
  • 语音搜索与投屏表现依设备而异

设备支持与兼容性

  • 支持:各类 Android TV 与 TV 盒子(含 Fire TV、NVIDIA Shield、Google Chromecast with Google TV),乃至 Android 4.3(KitKat)的老设备
  • 不支持:手机、非 Android 平台(如 Samsung Tizen、LG webOS、iOS 等)

SmartTube 需要 Android 4.3 以上。若是非 Android 电视,可外接 Android TV 盒子/电视棒使用。


安装方式(强烈建议从官方来源获取)

请不要从第三方应用商店、APK 站点或博客下载,这些来源可能掺杂广告或恶意内容。按照 README,最佳做法是:

常见安装方式:

  • 在电视上安装 Downloader(AFTVnews 出品),打开后输入短链(kutt.it/stn_betakutt.it/stn_stable)并按提示操作
  • 用“发送到电视”的工具或 U 盘拷贝 APK 到电视后安装
  • 进阶用户可使用 ADB 安装(参见 README 所引导的 ADB 教程链接)

Chromecast with Google TV 的用户需要先开启“开发者选项”和“未知来源”,Xiaomi 国行固件设备安装 beta 可能受限,建议改用稳定版或参考 README 中的替代方案。

更新方面,应用内置更新器,首次安装后后续更新可在应用内完成。


连接手机进行投屏

与官方 YouTube 不同,SmartTube 不会在同一 Wi‑Fi 下自动出现,需要手动“配对”:

  1. 打开电视端 SmartTube → 设置 → “Remote control(遥控)”
  2. 手机上打开 YouTube → 设置 → 通用 → 在电视上观看 → 使用 TV 代码连接
  3. 输入电视上显示的代码
    注意:必须先打开电视端 App 才能接收投屏。

语音搜索(Bridge 方案)

  • Fire TV:卸载官方 YouTube(无 root),然后安装 Amazon Bridge(链接见 README)
  • Google Chromecast with Google TV:卸载官方 YouTube(无 root),安装 ATV Bridge
  • 其他 Android 设备:需要 root 才能启用(卸载官方 YouTube 包名 com.google.android.youtube.tv,再安装 ATV Bridge)

示例命令(来自 README):

1
adb shell pm uninstall com.google.android.youtube.tv

播放体验与技术选项

  • 画中画(PiP):设置 → 通用 → 后台播放 → 画中画
  • 倍速:播放器界面顶栏“速度表”图标,设置后可跨视频记忆
  • 自动播放/单曲循环:使用“循环”按钮切换模式
  • HDR:取决于设备软硬件链路(TV/盒子/线缆/格式等),并非所有设备都支持
  • 码流/分辨率优选:可在设置中为“视频预设”设定默认上限

编解码器选择(README 摘要)

  • AV1(AV01):压缩率最好,但需要新硬件支持(2020 年后设备逐步支持)
  • VP9:多数 2015 年以来设备都支持,是更稳妥的选择
  • AVC(H.264):更老的通用方案,兼容最好但码率更高

同分辨率下,“更低的码率通常意味着更高的压缩效率”,YouTube 目标是“相同质量”,选择哪个更多取决于设备硬件解码能力与带宽。


常见问题速览(摘编)

  • 缓冲多:可尝试加密 DNS(例如 NextDNS)、降低分辨率、切 AVC、增大缓冲等
  • AV1/VP9 播放问题:多数设备无 AV1 硬解,或廉价盒子高分辨率 VP9 可能掉帧,优先使用设备支持的硬解格式
  • “视频不可用/未知编码”:等待 5 秒、重试播放,或拔掉 USB 音频设备;必要时切换视频格式
  • “未出现在投屏列表”:请按“投屏配对”步骤设置
  • 不能下载视频:SmartTube 不提供下载功能
  • 自动更新:第三方应用不具备静默安装权限,SmartTube 仅能提示并引导更新

更完整的问答请以 README 的 FAQ 为准。


构建与开发(来自 README)

注意:需要 OpenJDK 14 或更老版本(更新的 JDK 可能导致崩溃)

1
2
3
4
5
git clone https://github.com/yuliskov/SmartTube.git
cd SmartTube
git submodule update --init
adb connect <device_ip_address>
gradlew clean installStstableDebug

代码小例子

以下示例用于“演示 Android TV 播放管线思路”,并非仓库源码片段。SmartTube 内部集成了 ExoPlayer(项目内含 Amazon 定制移植版 exoplayer-amzn-2.10.6,参见其 子目录说明)。如果你在做 TV 端播放器开发,可参考类似思路:

示例:用 ExoPlayer 在 Android TV 播放一个媒体(Kotlin 演示)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// build.gradle(app) 需添加 ExoPlayer 依赖(版本根据你项目实际而定)
import android.net.Uri
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.google.android.exoplayer2.ExoPlayer
import com.google.android.exoplayer2.MediaItem
import com.google.android.exoplayer2.ui.PlayerView

class TvPlayerActivity : AppCompatActivity() {

private var player: ExoPlayer? = null
private lateinit var playerView: PlayerView

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
playerView = PlayerView(this).apply {
useController = true // 遥控器方向键/OK 即可操作
}
setContentView(playerView)
}

private fun initializePlayer() {
val mediaUri = Uri.parse("https://storage.googleapis.com/exoplayer-test-media-0/play.mp3")
player = ExoPlayer.Builder(this).build().also { exo ->
playerView.player = exo
exo.setMediaItem(MediaItem.fromUri(mediaUri))
exo.prepare()
exo.playWhenReady = true
}
}

public override fun onStart() {
super.onStart()
if (player == null) initializePlayer()
}

public override fun onStop() {
super.onStop()
player?.release()
player = null
}
}

如果你的目标设备是 Amazon Fire TV,且需要更好的兼容性,请参考 SmartTube 中引入的 Amazon 移植版 ExoPlayer(路径:exoplayer-amzn-2.10.6)及其 README 以选择合适的依赖与 API。

另一个来自 README 的实用命令(用于启用 Bridge 方案时卸载官方 YouTube TV):

1
adb shell pm uninstall com.google.android.youtube.tv

社区与支持

在提问前,建议先查阅 README 的 FAQ,并简单浏览群聊的近期历史。


捐赠支持

如果你觉得它帮到了你,可以通过 Patreon 等方式支持开发者持续维护与迭代:

README 还提供了多种加密货币地址与其他方式,出于安全准确性建议直接参考 README 最新版。


写在最后

SmartTube 用“极其务实”的方式解决了电视端观影的很多痛点:广告、卡顿、投屏配对、倍速与 60fps、HDR、SponsorBlock 等,都在 TV 的交互范式下做了贴心适配。更难得的是,它并非商业团队运作,而是一个开源爱好者项目,却依然保持了高质量与社区活力。

如果你正在使用 Android TV、Fire TV、Chromecast with Google TV,或手头有一个老旧但仍可用的安卓盒子,不妨试试 SmartTube 的 Beta 版;如果你追求稳定,那就选择 Stable。请务必从官方渠道获取 APK,并留意 README 的最新提示与安全公告。祝你在 TV 大屏上自由、干净、顺手地探索内容世界!

— 参考与原始信息: