【问题标题】:Why does WPF MediaElement not work on secondary monitor?为什么 WPF MediaElement 在辅助监视器上不起作用?
【发布时间】:2010-11-15 22:51:07
【问题描述】:

我的应用程序使用 WPF MediaElement 播放视频(MOV 文件)。这在主显示器上播放时效果很好,但在窗口移动到辅助显示器时会冻结。

我尝试了以下方法但没有成功:

  1. 在辅助监视器上启动应用程序
  2. 交换主要和次要监视器(问题转移到新的次要监视器)

当应用程序窗口跨越两个监视器时,它可以正常工作,但一旦它完全位于辅助监视器中,视频就会冻结。一旦处于这种状态,将应用程序移回主监视器将无济于事(加载新视频也无济于事)。

显示器的排列使坐标始终为正(两个显示器均为 1920x1080,辅助显示器原点为 1920,0)。

有其他人看到这个问题和/或找到解决方法吗?

编辑

是否有人将 WPF MediaElement 与多个监视器一起使用???

【问题讨论】:

  • 会不会是副显没有被GPU加速?这是在多台 PC 上还是在一台 PC 上保持一致?
  • 目前只在一台笔记本电脑上试过。我正常配置中的辅助显示器是笔记本电脑屏幕。如果我将外接显示器设置为辅助显示器,问题仍然存在。顺便说一句,Windows Media Player 在同一部电影的主要和次要上都可以正常工作。
  • WPFMediaKit 也适用于两台显示器......
  • 找到另一台没有此问题的笔记本电脑。从来没有为我的笔记本电脑找到解决方案。
  • 我可以确认这个错误。我正在使用 MediaElement 播放视频,它总是在辅助监视器上生成的窗口上冻结。

标签: wpf mediaelement multiple-monitors


【解决方案1】:

这仍然是 .NET Framework 4.0 中的一个已知问题,MS 将其描述为 “当显示更改时 WPF 和基础 WMP 控件之间的同步必须重新同步时,就会出现此问题发生。” 它发生在 H.264 编解码器视频文件中。


这里有 3 个解决方法。

1 .对包含 MediaElement 控件的窗口使用软件渲染

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;
        }
}

但是,这并没有利用 GPU 和图形内存,并且可能会减慢视频播放速度。


2。在主显示屏上至少重叠 1 个像素

例如,假设主屏幕在左侧,MediaElement 填满了整个窗口。在窗口的构造函数中,假设 Rect bounds 表示二级监视器边界,使用

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

所以 MediaElement 在主显示器上重叠了 1 个像素宽,然后它就可以正常播放 H.264 视频文件了。


3.使用除 MS 的 Media Foundation 编解码器以外的其他 MP4 编解码器

下载工具“Win7DSFilterTweaker”以禁用媒体基础“MP4”播放。 安装另一个 MP4 编解码器,例如 ffshow。

【讨论】:

  • 在这篇文章中,您引用了 MS 的一些内容。该报价的参考是什么?您知道 .NET 4.5.x 中是否已修复此问题?
  • 显然没有在 .NET 4.5.x 中修复——我现在正面临这个问题。
【解决方案2】:

检查事件:MediaOpened、MediaEnded 和 MediaFailed 是否仍在引发。 我认为这不是这个控件“忽略”第二个监视器的已知问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多