- WPF自带的媒体播放器
纯WPF支持,支持格式有限,功能有限
2、开源库LibVLCSharp.WPF
LibVLC库是一个全平台播放组件,功能强大,并支持视频摄像头,对WPF的支持只是简单的host封装,并未对应的开发纯WPF控件,在WPF中使用并不方便。
项目源码:VideoLAN / LibVLCSharp · GitLab
3、开源库 WPF-MediaKit
.NetFromework: Sascha-L/WPF-MediaKit (github.com)
可以将项目升级到.Net8,网上也有对应的带Core的升级开源项目,自己也可以对代码进行修改,去除对System.Windows.Form的依赖。
这个库含两个纯WPF控件,一个是媒体播放控件,其支持各种视频/音频格式,缺点是不支持音轨选择(或者是我没找到),速度快,运行稳定,依赖Dll少(库本身只需要DirectShowLib-2005.dll文件,如果需要EVR解码,无需引用,只在输出目录放置EVRPresenter64.dll即可),方便部署;另一个是视频摄像头控件,速度快,支持截屏,但不支持视频录制。
4、开源库Flyleaf
编写了若干WPF控件,但播放器本身使用的仍旧是Host方式,功能强大,支持各种视频/音频格式/支持音轨/支持字幕/支持摄像头,如果编译其中的一个例子FlyleafPlayer (WPF Control) (WPF),甚至可以得到一个完整的播放器,界面如下:
测试时PotPlayer有时卡顿,视频音频不同步,而这个库则表现的异常稳定,感觉是一个万能播放器。
个人感觉这个播放器非常强大,由于原库没有收藏列表,我做了一下扩展,用于自用:
5、MediaFoundationNet
开源项目:github.comhttps://github.com/visioforge/MediaFoundationNet
WPF Telerik的WebCam控件基于此项目开发的,MediaFoundationNet库100% C#实现,主要用于控制摄像头,可截屏,可录音(带语音功能)。
最近测试了几款播放器的性能:Windows自带原始播放器/Windows 新款 WinUI播放器/VLC播放器/上面自编译的FlyleafPlayer/PotPlayer播放器,在Windows11下播放同一首视频,调整到相同大小的窗口,它们都开了硬件加速,运行时cpu占用几乎为0,但GPU占用却差别很大,表现最好的是Windows自带原始播放器(GPU0为8%,GPU1为0),其中GPU0为Intel集成显卡,GPU1为RTX 4050独立显卡,其次是VLC播放器(GPU0为11%,GPU1为0),个人怀疑界面是用C/C++编写的,FlyleafPlayer(GPU0为0%,GPU1为21%),其界面是使用的WPF,考虑到会占用部分GPU资源,PotPlayer(GPU0为27%,GPU1为0%),表现最差的是微软为Win11新设计的WinUI 播放器(GPU0为11%,GPU1为37%),此播放器同时占用两个GPU资源,当最小化到任务栏后,上述几款播放器占用的资源百分几直接降低到个位数,优化还都注意到这点了,如果要说还有更差的,就是测试了一下商店下载的腾讯播放器(GPU0为25%,GPU1为38%),当最小化窗口时,资源几乎没有释放,还是那么高。
综合来说,VLC播放器最好,只是目前版本界面太传统,换肤后,在4K分辨率下窗口变成了小不点;同时,通过创建WPF项目直接引用LibVLCSharp.Wpf包,同样的测试,资源消耗为r(GPU0为0%,GPU1为23%),性能几乎与FlyleafPlayer的WPF版本相同,也就体现不出Vlc的优点了。