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