2009-08-21 11 views
2

Ich habe bemerkt (auf meiner Vista 64bit Maschine), dass ein Video, das in einem WPF MediaElement gezeigt wird, andere Farben als beim Abspielen in Windows Media Player hat. Innerhalb des MediaElement hat das Video ein leicht entsättigtes Aussehen mit geringerem Kontrast.WPF: Videofarben in MediaElement unterscheiden sich von Windows Media Player

Die Videos, die ich bisher ausprobiert habe, sind WMV-Videos, die von verschiedenen Leuten mit unterschiedlichen Tools erstellt wurden, so dass ich Probleme mit dem Videomaterial ausschließen würde. Alle Schieberegler "Videoeinstellungen" in Windows Media Player (Farbton, Sättigung, Helligkeit, Kontrast) haben ihre Standardwerte.

Aus diesem Grund vermutete ich zuerst ein Problem in meiner Software, das sich der animierten Opazität und dem Inhalt bedient, die über das Video gelegt werden.

Aber ich habe in der Lage, das Verhalten mit einem einfachen Testprogramm zu reproduzieren, wo die XAML wie folgt aussieht:

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

Bin ich etwas falsch? Gibt es eine Problemumgehung?

Antwort

2

Da ich ziemlich sicher bin, die Media die VMR9 auf XP verwenden und die EVR auf Vista, können Sie das Verhalten here

Ich vermute, Windows Media Player verwendet entweder die VMR7 oder Standard-Video zu sehen sein, erklärt Renderer, so hat es dieses Verhalten nicht. ODER Microsoft hat in gewisser Weise kompensiert.

+1

Vielen Dank! Der Blog-Post, auf den in der Antwort verwiesen wird, erwähnt das "WPFMediaKit", für das der Quellcode auf CodePlex verfügbar ist. Anstatt die Klassen dieser Bibliothek für die Videowiedergabe zu verwenden, habe ich den Shader-Effekt "DeeperColor" isoliert verwendet, d. H. Ich habe der Effect-Eigenschaft meines MediaElement eine Instanz der DeeperColor-Klasse zugewiesen, und die Farben waren in Ordnung! Die DeeperColor-Klasse befindet sich im Ordner "Effects" des WPFMediaKit-Projekts. Achten Sie darauf, die Build-Aktion von "DeeperColor.ps" auf "Ressource" zu setzen, wenn Sie sie direkt in Ihrem eigenen Projekt verwenden möchten. –

2

Wenn Ihre Grafikkarte dies unterstützt, gibt es manchmal einige Softwareoptionen, um dies zu beheben.

Wenn Sie eine NVidia-Karte haben, rufen Sie das NVidia-Kontrollfeld auf. Klicken Sie auf "Video" im Optionenbaum. Wählen Sie den Monitor und klicken Sie auf das Optionsfeld "Mit NVidia-Einstellungen". Wählen Sie auf der erweiterten Registerkarte "Dynamischer Bereich 0-255".

Das ist es!