WPF:MediaElement中的视频颜色与Windows Media Player不同

4

我在我的Vista 64位机器上注意到一个问题:WPF MediaElement播放的视频与在Windows Media Player中播放时颜色不同。在MediaElement中,视频看起来有点褪色且对比度较低。

我已经尝试了由不同人使用不同工具制作的WMV视频,因此我排除了视频素材的问题。Windows Media Player中所有“视频设置”滑块(色调、饱和度、亮度、对比度)都处于默认值。

这就是为什么起初我认为是我的软件存在问题,因为我在软件中广泛使用了动画透明度和叠加在视频上的内容。

但我已经能够用一个简单的测试程序重现了这个行为,其中XAML如下:

<Window x:Class="MediaElementTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">

    <MediaElement Source="D:\Test\Video.wmv" />
</Window>

我做错了什么吗?有没有解决方法?

2个回答

5

我相信MediaElement在Windows XP上会使用VMR9,在Windows Vista上则会使用EVR,因此您可能会看到这里所解释的行为。

我猜测Windows Media Player使用的是VMR7或默认的视频渲染器,因此它没有这种行为。或者微软已经以某种方式进行了补偿。


5
非常感谢!答案中提到的博客文章提到了“WPFMediaKit”,其源代码可在CodePlex上获得。 我没有使用该库的类来进行视频播放,而是仅尝试使用“DeeperColor”着色器效果,即将DeeperColor类的实例分配给我的MediaElement的Effect属性,颜色就很好! DeeperColor类可以在WPFMediaKit项目的Effects文件夹中找到。如果您想直接在自己的项目中使用它,请确保将“DeeperColor.ps”的构建操作设置为“资源”。 - Roland Weigelt

2
如果您的显卡支持,有时会有一些软件选项来解决此问题。
如果您有NVidia显卡,请转到NVidia控制面板。在选项树中单击“视频”。选择监视器并单击“使用NVidia设置”单选按钮。在高级选项卡中,选择“动态范围0-255”。
就这样!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接