MediaWPF
基于 .NET 6 實作視頻硬解碼渲染Demo(無空域問題)
代碼實作僅供學習參考
本專案視頻渲染通過顯卡進行視頻解碼,CPU幾乎不參與作業,并且不存在令人煩躁的空域問題,
在播放攝像頭多路視頻或高解析度、高幀率視頻時可以極大發揮顯卡性能(我認為該專案做到了這一點),
播放4k、8k視頻也可以做到極佳的渲染效率,
該專案實作參考雷霄驊大佬的博客,非常感謝他為音視頻技術方向做出的貢獻,
實作原理:
使用 LibVLCSharp 庫硬解碼獲取視頻YUV420p(8bit、10bit)幀資料進行回呼,采用GLWpfControl 控制元件用于呈現畫面(該控制元件基于D3DImage,所以不存在空域問題),
視頻YUV資料 -> OpenGL -> Shader(YUV to RGB) -> 呈現畫面
測驗設備
處理器: AMD Ryzen 7 5800H
顯卡: Nvidia GeForce RTX 3050 Laptop GPU 4G
因筆記本依靠核顯渲染畫面,并且功耗方面有所限制,實際測驗效率會存在一小方面影響,
4K 60幀 SDR視頻
處理器占用率 5~10%
顯卡占用率 40~50%

4K 60幀 HDR版本(視頻亮度不足,在SDR螢屏上播放HDR視頻都是經過色調映射的后處理,網上流傳的轉換矩陣基本都會丟失亮度)
處理器占用率 10~20%
顯卡占用率 50~60%

4K 144幀 SDR視頻(該視頻為后期補幀實作高幀率,所以幀間隔不穩定)
處理器占用率 10~20%
顯卡占用率 60~75%

8K 60幀 SDR視頻(實際表現穩定在40~45幀左右)
處理器占用率 10~20%
顯卡占用率 70~80%

四路 1080p SDR視頻(前兩個視頻為30幀,后兩個視頻為25幀)

GitHub地址
https://github.com/qian-o/MediaWPF
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/497043.html
標籤:WPF
上一篇:Redis 原理 - Set
