ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

SmartTube:3 步搞定 Android TV 上 HDR 播放,附硬件检查清单

SmartTube:3 步搞定 Android TV 上 HDR 播放,附硬件检查清单 SmartTube3 步搞定 Android TV 上 HDR 播放附硬件检查清单【免费下载链接】SmartTubeBrowse media content with your own rules on Android TV项目地址: https://gitcode.com/GitHub_Trending/smar/SmartTube遥控器按下播放按钮的那一刻画面本该亮起来可你等来的还是一片灰蒙蒙。这就是 HDR 没跑通时的典型状态码率没变、清晰度没变唯独亮度和色彩没兑现。SmartTube 是跑在 Android TV 上的开源媒体客户端主打按自己的规则看片HDR 识别就是它最见功夫的一处——它会自动认出哪些流是 HDR 的并在轨道列表里明明白白标出来让你一眼分清硬件到底支不支持。 拆开看看它背后在干嘛YouTube 的 HDR 流是怎么被认出来的同一条视频YouTube 会给出好几档不同编码的流HDR 版本就混在里面。SmartTube 不会靠猜它给每条流做两道验证都过了才算数。第一道轨道 ID 落在固定区间里YouTube 给流分配的轨道 ID 不是随机的HDR 版本落在两段固定编号里。对应判断在 TrackSelectorUtil.java 里int parsed Helpers.parseInt(id); return (parsed 330 parsed 337) || (parsed 694 parsed 701);这段代码做的事就一件WebM 容器里 330 到 337 的 ID、MP4 里 694 到 701 的 ID都判为 HDR。第二道codec 字符串对得上已知 HDR 编码有些流拿不到可靠的 ID那就看 codec编解码器标识。VP9 HDR 的编码名是 vp9.2这是 VP9 里专为 10-bit HDR 准备的 ProfileAV1 HDR 的 codec 尾巴是串固定数字。代码里的判断逻辑是return codec.equals(CODEC_PREFIX_VP9_HDR) || Helpers.endsWithAny(codec, CODEC_SUFFIX_AV1_HDR, CODEC_SUFFIX_AV1_HDR2, HDR_PROFILE_ENDING);翻译成人话codec 等于 vp9.2或者以已知的 AV1 HDR 数字后缀结尾就认定为 HDR 流。识别结果怎么摆到你眼前两道关都过了这条流在画质切换菜单里就会被挂上 HDR 标记轨道名的组装逻辑同样在这个工具类里。所以你在界面上看到 HDR 字样说明识别这一步已经跑通看不到那就是流本身没被认出来跟显示不显示的设置无关。 动手之前先确认这几件事HDR 是整条链路的事官方 README 直言这是个麻烦的大杂烩你的电视硬件支持 HDR10 或 HLG说明书或系统设置里能查到机顶盒和盒子到电视之间的 HDMI 线版本达标——不同版本的 HDMI 线 HDR 能力确实不一样设备不在已知掉队名单上比如 NVIDIA Shield它本身支持 HDR但不支持 YouTube 用的那个 HDR 格式这三条里任何一条断了后面怎么调设置都白搭README 建议直接搜设备型号 HDR查社区里的实测结论。 跟着我走一遍先把筛选条件勾上打开 SmartTube 进搜索页把筛选面板拉起来在Features一栏勾上HDR。这个入口的代码在 SearchPresenter.java勾上之后搜索列表会重新加载留下的都是有 HDR 流的视频。先过滤再点开能省掉大半冤枉路。进播放页确认轨道随便点开一个等进度条动起来之后从菜单里打开画质切换。这时候你会看到一列轨道每行写着分辨率、帧率、码率、编码带 HDR 标记的那条就是目标。选中它画面应该立刻通透一档。如果界面显示的轨道里一条 HDR 标记都没有说明这条视频的 HDR 流没被识别到或者设备压根没拉到 HDR 流先回到上一节查链路。设置里再做一次交叉验证设置里有一项叫Video formats进去能看到当前选中轨道的完整信息。它跟播放页的轨道列表读的是同一份识别结果两边对得上才算真的跑通了。️ 踩坑备忘选完 HDR 轨道画面反而偏暗、发灰大概率是硬件解码后的动态范围映射没对上这是设备端的事SmartTube 只负责把对的流送进去。试一下电视系统设置里的 HDR 模式或亮度选项别在播放器里找不存在的东西。播着播着频繁缓冲多半是带宽没兜住HDR 轨道的码率比普通 1080p 高出一截。试一下换低一档的 HDR 轨道或者用 AppDataSourceManager.java 里定义的vp9hdr固定预设把分辨率钉死在 1080p 60 帧再播。搜索里勾了 HDR 结果却没几条这不是 bug。带 HDR 流的视频本来就集中在少数热门内容里换个关键词或者去大频道翻翻历史视频命中率高得多。 接下来还能期待什么杜比视界、SDR 转 HDR 这类增强仓库里目前都没有实现官方也没给时间表别在设置里找不存在的开关。HDR 相关的疑难点可以去 issue 列表翻翻同类问题或者进官方 Telegram 群组 SmartTubeEN 直接问维护者。下次遥控器按下播放按钮别再只看画质参数——链路对了HDR 不会让你失望。【免费下载链接】SmartTubeBrowse media content with your own rules on Android TV项目地址: https://gitcode.com/GitHub_Trending/smar/SmartTube创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进