【WPF知识积累】MediaElement在windows7上双显示器播放的问题

当系统接入了多个显示器,而我们的Window又位于非主屏幕,可能会出现MediaElement无法正常工作的情况(这个情况在windows7有,windows10已经修复了,windows8和8.1不太清楚)。大概的解决办法有下面几种:
1、使用CPU进行解码计算,代码如下

private void Window_Loaded(object sender, RoutedEventArgs e)
{
        var hwndSource = PresentationSource.FromVisual(this) as HwndSource;
        if (hwndSource != null)
        {
            var hwndTarget = hwndSource.CompositionTarget;
            if (hwndTarget != null) hwndTarget.RenderMode = RenderMode.SoftwareOnly;
        }
}

2、让位于副屏幕的windows挪一下位置,在主屏幕上一个像素就行了,代码如下:

this.Left = bounds.Left - 1;
this.Width = bounds.Width;
this.Top = bounds.Top;
this.Height = bounds.Height;

3、使用其他播放器,比如vlc或者ffmpeg。关于vlc的播放器,可以使用这个开源的播放器框架:Meta.Vlc

WPF是一种桌面应用程序开发技术,其中的MediaElement控件可以用来播放各种媒体文件,包括MP4格式。 要在WPF中使用MediaElement播放MP4文件,首先需要在XAML代码中添加一个MediaElement控件。然后,通过设置MediaElement控件的Source属性将MP4文件路径指定给它。 例如,假设我们有一个名为"video.mp4"的MP4文件在应用程序的根目录中,以下是一个简单的示例: ```xml <Grid> <MediaElement x:Name="mediaPlayer" Source="video.mp4" /> </Grid> ``` 通过以上代码,我们创建了一个带有名为"mediaPlayer"的MediaElement控件,并将其Source属性设置为"video.mp4"。这样就完成了MP4文件与MediaElement控件的关联。 接下来,我们需要通过代码来控制媒体的播放MediaElement控件提供了一些常用的方法和属性,例如Play、Pause、Stop等,可以通过这些来控制媒体的播放状态。 例如,我们可以在按钮的点击事件中添加以下代码来实现播放和暂停功能: ```csharp private void PlayButton_Click(object sender, RoutedEventArgs e) { mediaPlayer.Play(); } private void PauseButton_Click(object sender, RoutedEventArgs e) { mediaPlayer.Pause(); } ``` 在这个示例中,我们定义了两个按钮,分别用于播放和暂停操作,通过调用mediaPlayer对象的Play和Pause方法来实现对媒体的控制。 综上所述,我们可以通过将MP4文件路径指定给MediaElement的Source属性,然后通过代码控制MediaElement播放、暂停等操作来实现在WPF应用程序中播放MP4文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值