我需要一些幫助來弄清楚 PC 和/或 VLC 使用 CPU 而不是 GPU 來播放 4k 視訊的原因。 (我認為無論視頻如何,它總是使用 CPU 來渲染視頻,因為系統性能圖表總是顯示部分或所有 cpu 線程上可能有 2-5% 的 GPU 使用率和 30-80% 的使用率)
這是我所知道的:
- 玩這個視頻在 youtube 上的瀏覽器中以 2160p 60fps 運行時,一半核心的 CPU 使用率達到 80%,效果很好 - 但我的系統監視器中的 GPU 使用率仍然不多。演奏相同然而,VLC 中的影片使用了我的 ryzen 5 6 核心 12 線程 4.2GHz CPU 的 100%,充其量是斷斷續續的,通常是靜止不動的。 [編輯] 我得到了 3 種格式的影片:mp4、mkv 和 webm,都是 4k@60。 MKV 和 WEBM 使用與瀏覽器/yt 中相同的資源 (cpu) - 然而,FPS 較低,絕對低於 20fps,而不是 60fps。然而 MP4 使用了我 100% 的 CPU 並且卡頓,正如我所解釋的。
- VLC設定為使用硬體加速,我嘗試了所有選項(自動、direct3D 11、directx DXVA 2.0),並在更改後重新啟動vlc(甚至我的電腦),沒有區別。
- 我使用的是最新的VLC(3.0.11)
- GPU 是 gtx 1660Ti,馬力方面應該超過殺傷力,可以執行 120Hz VR 等,並使用最新的 nvidia 驅動程式。我沒有其他/整合顯示卡。
是否有可能因為我的系統上沒有某種編解碼器/驅動程序,所以 VLC 預設為 CPU 渲染?對於我的瀏覽器來說也是同樣的問題,它的運行速度比 VLC 更好,但似乎仍然只使用 CPU。另外,我如何找出哪些硬體支援哪些解碼以及需要哪些編解碼器?如何找到 VLC 告訴我是否使用 GPU 渲染當前影片的日誌或其他資訊以及原因?
為什麼在 GPU 上解碼影片如此困難?如果您可以編寫一個計算著色器來對任何舊事物進行GPGPU 計算,例如計算物理、或生成網格、或雕刻點雲、或素數分解、或運行100% 完整的演示場景著色器風格視頻遊戲,為什麼不製作影片呢?我知道有些編解碼器非常奇特,可能是為CPU 設計的,但毫無疑問,2019-2020 年的遊戲GPU 可以比6 核cpu 或蹩腳智慧型手機的ARM 晶片視訊模組更好地對其進行暴力破解。
[更新]我發現它與編碼有關。 MP4容器中的影片完全不使用GPU,而MKV和WEBM則使用GPU:
看來 youtube MP4 使用AV1編解碼器編碼另外2個使用VP9編碼。這兩種格式都是開源格式,因此 VLC 處理它們應該沒有問題。
它也是似乎沒有任何視訊卡現在將解碼器整合到他們的晶片中。但無論是否有 ASIC,並不意味著 GPU 本身無法以 GPGPU 方式對其進行解碼(正如 AV1 的維基百科條目中也提到的那樣)。不管怎樣,這並不能解決我的問題,但解釋了原因。
答案1
我發現問題與編碼有關。 Youtube 將影片打包在 3 個容器中:MP4 容器在 vlc 中播放時完全不使用 GPU,而其他 2 個容器 MKV 和 WEBM 使用 GPU:
看來 youtube MP4 使用AV1編解碼器編碼另外2個使用VP9編碼。這兩種格式都是開源格式,因此 VLC 處理它們應該沒有問題,但由於某種原因無法在 GPU 上播放 AV1。那麼問題就變成了為什麼vlc/windows不能在gpu上播放av1。
它也是似乎沒有任何視訊卡現在,他們將 AV1 解碼器整合到他們的晶片中(就像他們對 h.264 和 h.265 所做的那樣)。但無論是否有 ASIC 等,並不意味著 GPU 本身無法以 GPGPU 方式對其進行解碼(正如 AV1 的維基百科條目中也提到的那樣)。不管怎樣,這並不能100%解決我的問題,但解釋了原因,我知道現在要尋找什麼(如何在gpu上播放AV1 - 但我不知道我在日常生活中會多久遇到AV1)生活所以我現在很高興沒有它)
答案2
差異的根源在於 VLC 使用自己的編解碼器,而瀏覽器則使用系統安裝的編解碼器。
我已經下載了多種解析度的影片。它使用標識為“isom (isom/iso2/mp41)”的編解碼器並進行了嘗試:
- 使用 VLC,8K 版本 - 無視頻
- 使用 VLC,4K 版本 - 視訊跳動,幀之間間隔較大(凍結)
- 使用 MP-HC (x64)、8K 和 4K 版本 - 流暢,但以 100% 和大約 30-50% 的 GPU 使用了我的所有核心
- 使用 Chrome YouTube - 流暢,很少使用 CPU 和 GPU,但 720p 是提供的最大分辨率
- 使用 Firefox YouTube - 4K 版本,流暢,CPU 很少,GPU 20-50%
- 但是當 8K 和 4K 視訊檔案被丟棄時直接進入Firefox或Chrome,影片播放基本上不起作用。
我的結論是,這個編解碼器需要大量資源,對於大多數玩家來說相當麻煩。使用 YouTube 時,瀏覽器會使用比應使用的解析度低得多的解析度來進行作弊。