关于WPF中使用AxWindowsMediaPlayer的一些心得体会

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w815878564/article/details/78978430

之前项目是WPF的,因为有视频播放的需求,所以自然而然的使用了MediaElement。但是客户的机器实在太垃圾了,还是用的赛扬处理器(真的是无语了),程序运行起来CPU占用立马飙到80%多。
后来换了VLC,但是Nuget上的几个vlc库效果还不如MediaElement,再后来考虑到使用DirectShow,但是却不支持MP4文件(这个需要自己注册编码器,搜索了一下资料,搞了半天实在没有进展,就放弃了)。于是想起了winform,winform其实在性能上一直要比wpf的表现要好。
当然,项目不可能整体转向winform(难度倒是不大,就是改起来感觉恶心,而且时间上也不允许)。还好有WindowsFormsHost这个兼容的东西,可以帮助我们在wpf上使用一些winform的控件。好了,下面就开始正式梳理一下,如何在wpf上使用winform。
第一步,生成AxWindowsMediaPlayer,AxWindowsMediaPlayer属于一个com组件,不在System.Winforms里面,所以我们需要先建立一个Winform工程。然后在工程里面添加WindowsMediaPlayer的引用,这个引用在COM组件里面。接着我们在winform里面调用一下AxWindowsMediaPlayer,然后编译项目。
第二步,将第一步编译生成的将编译生成的Interop.WMPLib.dll和AxInterop.WMPLib.dll两个dll添加到我们WPF工程的引用里面,这样我们就能使用AxWindowsMediaPlayer了。
使用的时候需要注意一些问题:
1.通过WindowsFormsHost来包装AxWindowsMediaPlayer或者其它winform控件的时候需要注意,我们的Window窗口的AllowsTransparency属性只能设置为false,否则winform控件将无法显示。
2.设置AxWindowsMediaPlayer的一些属性的时候,必须在其宿主WindowsFormsHost被添加到Window中以后才能调用。这里主要是针对通过代码直接添加AxWindowsMediaPlayer的情况,如果直接写在xaml里面不会有这样的问题。
3.AxWindowsMediaPlayer只能等比例拉伸视频,而且似乎只能在web中使用才有效果。

猜你喜欢

转载自blog.csdn.net/w815878564/article/details/78978430
今日推荐