Giter Site home page Giter Site logo

mediawpf's Introduction

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%
image

4K 60帧 HDR版本(视频亮度不足,在SDR屏幕上播放HDR视频都是经过色调映射的后处理,网上流传的转换矩阵基本都会丢失亮度)
处理器占用率 10~20%
显卡占用率 50~60%
image

4K 144帧 SDR视频(该视频为后期补帧实现高帧率,所以帧间隔不稳定)
处理器占用率 10~20%
显卡占用率 60~75%
image

8K 60帧 SDR视频(实际表现稳定在40~45帧左右)
处理器占用率 10~20%
显卡占用率 70~80%
image

四路 1080p SDR视频(前两个视频为30帧,后两个视频为25帧)
image

mediawpf's People

Contributors

qian-o avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.