
SmartTube3 步搞定 Android TV 上 HDR 播放附硬件檢查清單【免費下載鏈接】SmartTubeBrowse media content with your own rules on Android TV項目地址: https://gitcode.com/GitHub_Trending/smar/SmartTube遙控器按下播放按鈕的那一刻畫面本該亮起來可你等來的還是一片灰蒙蒙。這就是 HDR 沒跑通時的典型狀態(tài)碼率沒變、清晰度沒變唯獨亮度和色彩沒兌現(xiàn)。SmartTube 是跑在 Android TV 上的開源媒體客戶端主打按自己的規(guī)則看片HDR 識別就是它最見功夫的一處——它會自動認(rèn)出哪些流是 HDR 的并在軌道列表里明明白白標(biāo)出來讓你一眼分清硬件到底支不支持。 拆開看看它背后在干嘛YouTube 的 HDR 流是怎么被認(rèn)出來的同一條視頻YouTube 會給出好幾檔不同編碼的流HDR 版本就混在里面。SmartTube 不會靠猜它給每條流做兩道驗證都過了才算數(shù)。第一道軌道 ID 落在固定區(qū)間里YouTube 給流分配的軌道 ID 不是隨機(jī)的HDR 版本落在兩段固定編號里。對應(yīng)判斷在 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編解碼器標(biāo)識。VP9 HDR 的編碼名是 vp9.2這是 VP9 里專為 10-bit HDR 準(zhǔn)備的 ProfileAV1 HDR 的 codec 尾巴是串固定數(shù)字。代碼里的判斷邏輯是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 數(shù)字后綴結(jié)尾就認(rèn)定為 HDR 流。識別結(jié)果怎么擺到你眼前兩道關(guān)都過了這條流在畫質(zhì)切換菜單里就會被掛上 HDR 標(biāo)記軌道名的組裝邏輯同樣在這個工具類里。所以你在界面上看到 HDR 字樣說明識別這一步已經(jīng)跑通看不到那就是流本身沒被認(rèn)出來跟顯示不顯示的設(shè)置無關(guān)。 動手之前先確認(rèn)這幾件事HDR 是整條鏈路的事官方 README 直言這是個麻煩的大雜燴你的電視硬件支持 HDR10 或 HLG說明書或系統(tǒng)設(shè)置里能查到機(jī)頂盒和盒子到電視之間的 HDMI 線版本達(dá)標(biāo)——不同版本的 HDMI 線 HDR 能力確實不一樣設(shè)備不在已知掉隊名單上比如 NVIDIA Shield它本身支持 HDR但不支持 YouTube 用的那個 HDR 格式這三條里任何一條斷了后面怎么調(diào)設(shè)置都白搭README 建議直接搜設(shè)備型號 HDR查社區(qū)里的實測結(jié)論。 跟著我走一遍先把篩選條件勾上打開 SmartTube 進(jìn)搜索頁把篩選面板拉起來在Features一欄勾上HDR。這個入口的代碼在 SearchPresenter.java勾上之后搜索列表會重新加載留下的都是有 HDR 流的視頻。先過濾再點開能省掉大半冤枉路。進(jìn)播放頁確認(rèn)軌道隨便點開一個等進(jìn)度條動起來之后從菜單里打開畫質(zhì)切換。這時候你會看到一列軌道每行寫著分辨率、幀率、碼率、編碼帶 HDR 標(biāo)記的那條就是目標(biāo)。選中它畫面應(yīng)該立刻通透一檔。如果界面顯示的軌道里一條 HDR 標(biāo)記都沒有說明這條視頻的 HDR 流沒被識別到或者設(shè)備壓根沒拉到 HDR 流先回到上一節(jié)查鏈路。設(shè)置里再做一次交叉驗證設(shè)置里有一項叫Video formats進(jìn)去能看到當(dāng)前選中軌道的完整信息。它跟播放頁的軌道列表讀的是同一份識別結(jié)果兩邊對得上才算真的跑通了。? 踩坑備忘選完 HDR 軌道畫面反而偏暗、發(fā)灰大概率是硬件解碼后的動態(tài)范圍映射沒對上這是設(shè)備端的事SmartTube 只負(fù)責(zé)把對的流送進(jìn)去。試一下電視系統(tǒng)設(shè)置里的 HDR 模式或亮度選項別在播放器里找不存在的東西。播著播著頻繁緩沖多半是帶寬沒兜住HDR 軌道的碼率比普通 1080p 高出一截。試一下?lián)Q低一檔的 HDR 軌道或者用 AppDataSourceManager.java 里定義的vp9hdr固定預(yù)設(shè)把分辨率釘死在 1080p 60 幀再播。搜索里勾了 HDR 結(jié)果卻沒幾條這不是 bug。帶 HDR 流的視頻本來就集中在少數(shù)熱門內(nèi)容里換個關(guān)鍵詞或者去大頻道翻翻歷史視頻命中率高得多。 接下來還能期待什么杜比視界、SDR 轉(zhuǎn) HDR 這類增強(qiáng)倉庫里目前都沒有實現(xiàn)官方也沒給時間表別在設(shè)置里找不存在的開關(guān)。HDR 相關(guān)的疑難點可以去 issue 列表翻翻同類問題或者進(jìn)官方 Telegram 群組 SmartTubeEN 直接問維護(hù)者。下次遙控器按下播放按鈕別再只看畫質(zhì)參數(shù)——鏈路對了HDR 不會讓你失望?!久赓M下載鏈接】SmartTubeBrowse media content with your own rules on Android TV項目地址: https://gitcode.com/GitHub_Trending/smar/SmartTube創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考