WPF下内嵌Windows MediaPlayer播放器

最近用了的加载播放器,来播放视频,没有其他要求,于是就打算用Windows自带的MediaPlayer播放器来实现,不过在wpf下,稍微要麻烦一点。
第一步 创建和设置项目
1、创建一个名为 HostingAxInWpf 的 WPF 应用程序项目。
2、在工程中新建Windows Forms Control Library 项目:WMPControlLibrary。
向解决方案中添加一个 Windows 窗体控件库项目,将该项目命名为 WmpAxLib。
这里写图片描述
3.在 WmpAxLib 项目中,添加对 Windows Media Player 程序集(名为 wmp.dll)的引用。
这里写图片描述
4.打开“工具箱”。
5.在“工具箱”中右击,再单击“选择项”。
6.单击“COM 组件”选项卡,选择“Windows Media Player”控件,然后单击“确定”。
Windows Media Player 控件会添加到“工具箱”中。注意:需要在底部右键操作。
这里写图片描述

第二步 创建 ActiveX 控件

Microsoft Visual Studio 自动在 Microsoft ActiveX 控件添加到设计图面时为该控件生成 AxHost 包装类。 下面的过程会创建一个名为 AxInterop.WMPLib.dll 的托管程序集。

1.在 Windows 窗体设计器中,打开 WmpAxControl.vb 或 WmpAxControl.cs。
2.从“工具箱”中,将 Windows Media Player 控件添加到设计图面。
3.在“属性”窗口中,将 Windows Media Player 控件的 Dock 属性的值设置为 Fill。
4.生成 WmpAxLib 控件库项目。
这里写图片描述

第三步 承载 ActiveX 控件
1.在 HostingAxInWpf 项目中,添加一个对所生成的 ActiveX 互操作程序集的引用。
此程序集的名称为 AxInterop.WMPLib.dll,当您导入 Windows Media Player 控件时,此程序集会添加到 WmpAxLib 项目的 Debug 文件夹中。
2.添加一个对名为 WindowsFormsIntegration.dll 的 WindowsFormsIntegration 程序集的引用。
3.添加一个对名为 System.Windows.Forms.dll 的 Windows Forms程序集的引用。
4.在 WPF 设计器中打开 MainWindow.xaml。
5.将 Grid 元素命名为 grid1。

<Grid >
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*"></ColumnDefinition>
            <ColumnDefinition Width="1*"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Grid x:Name="sp1" Margin="0 0 2 0" Grid.Column="0"></Grid>
        <Grid x:Name="sp2" Margin="2 0 0 0"  Grid.Column="1"></Grid>
    </Grid>

6.在设计视图或 XAML 视图中,选择 Window 元素。
7.在“属性”窗口中,单击“事件”选项卡。
8.双击 Loaded 事件。
9.插入下面的代码以处理 Loaded 事件。

 private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            System.Windows.Forms.Integration.WindowsFormsHost hostBox = new System.Windows.Forms.Integration.WindowsFormsHost();
            System.Windows.Forms.Integration.WindowsFormsHost hostDome = new System.Windows.Forms.Integration.WindowsFormsHost();
            AxWMPLib.AxWindowsMediaPlayer axWmpBox = new AxWMPLib.AxWindowsMediaPlayer();
            AxWMPLib.AxWindowsMediaPlayer axWmpDome = new AxWMPLib.AxWindowsMediaPlayer();
            hostBox.Child = axWmpBox;
            hostDome.Child = axWmpDome;
            this.sp1.Children.Add(hostBox);
            this.sp2.Children.Add(hostDome);
            axWmpBox.URL = @"C:\1\1.avi";
            axWmpDome.URL = @"C:\2\2.avi";
        }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
WPFWindows Presentation Foundation)是一个用于构建应用程序的框架,可用于创建图形化用户界面 (GUI)。WriteableBitmap是WPF中的一个类,用于在内存中创建可编辑的位图。结合这两者,可以实现一个简单的视频播放器。 首先,需要导入WPF相关的命名空间,并创建一个MainWindow窗口。在窗口中,我们可以使用MediaElement控件来播放视频文件。MediaElement控件是WPF中的一个多媒体播放器。 然后,我们可以使用WriteableBitmap创建一个可编辑的位图实例,用于显示视频的帧。可以在XAML中创建一个Image控件,并将WriteableBitmap设置为其Source属性。 接下来,我们需要通过MediaElement控件的MediaOpened事件来获取视频的宽度和高度。一旦获取到这些值,我们可以创建一个与视频帧大小相同的WriteableBitmap,并使用响应的宽度和高度。 然后,可以通过MediaElement控件的MediaEnded事件来获取视频的帧并将其存储为WriteableBitmap。可以使用WriteableBitmap的Render方法,将视频的帧作为WriteableBitmap的可视化视图。 最后,可以通过在主窗口中的Image控件的Source属性中设置WriteableBitmap,来显示视频的帧。可以使用DispatcherTimer控件来定期更新帧,以实现动态的视频播放。 需要注意的是,这只是一个基本的框架,用于实现一个使用WriteableBitmap的简单视频播放器。实际开发中还需要考虑更多的细节,如视频编解码以及帧的处理和渲染等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值