2009-08-21 146 views
2

我注意到(在我的Vista 64位機器上)在WPF MediaElement中顯示的視頻與在Windows Media Player中播放時具有不同的顏色。在MediaElement內部,該視頻具有稍微不飽和的外觀,對比度較低。WPF:不同於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

既然我敢肯定的MediaElement將使用VMR9在XP和Vista上EVR,你可能會看到的行爲解釋here

我猜Windows Media Player使用無論是VMR7或默認視頻渲染器,所以它沒有這種行爲。或者微軟以某種方式補償。

+1

非常感謝!在答案中鏈接到的博文中提到了源代碼可用於CodePlex上的「WPFMediaKit」。 而不是使用該庫的類來進行視頻播放,我單獨嘗試了「DeeperColor」着色器效果,即將DeeperColor類的一個實例分配給了我的MediaElement的Effect屬性,並且顏色很好! DeeperColor類可以在WPFMediaKit項目中的Effects文件夾中找到。如果您想直接在自己的項目中使用,請務必將「DeeperColor.ps」的構建操作設置爲「資源」。 – 2009-08-23 14:15:27

2

如果你的顯卡支持它,有時候會有一些軟件選項來解決這個問題。

如果您有NVidia卡,轉到NVidia控制面板。點擊選項樹中的「視頻」。選擇顯示器並點擊「With NVidia Settings」單選按鈕。在高級選項卡中,選擇「動態範圍0-255」。

那就是它!