WPF 视频硬解码渲染播放(无空域问题)(支持4K、8K、高帧率、各类协议RTSP ...

打印 上一主题 下一主题

主题 617|帖子 617|积分 1851

MediaWPF

基于 .NET 6 实现视频硬解码渲染Demo(无空域问题)

代码实现仅供学习参考

本项目视频渲染通过显卡进行视频解码,CPU几乎不参与工作,并且不存在令人烦躁的空域问题。
在播放摄像头多路视频或高分辨率、高帧率视频时可以极大发挥显卡性能(我认为该项目做到了这一点)。
支持各类网络协议如RTSP、RTMP、FLV等。
播放4k、8k视频也可以做到极佳的渲染效率。
该项目实现参考雷霄骅大佬的博客,非常感谢他为音视频技术方向做出的贡献。
实现原理:
使用 LibVLCSharp 库进行硬解码获取视频YUV格式(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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表