Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

WPF: Vorschau Bilder von Videos erstellen
 
In WPF ist es relativ schwierig ein Vorschaubild eines Videos zu erstellen.Microsoft stellt keine direkte Funktion wie unter UWP zur Verfügung.
Deshalb muss man über zwei Workaround-Möglichkeiten ein Vorschau Image erstellen:
 
Variante A:
Mediaplayer+DrawingContext
Man erstellt ein MediaPlayer Objekt zur Laufzeit und erstellt im OpenMedia Event ein Bild von einem darstellenden Bildschirmbereich.
 
Variante B:
DirectShow
Unter der DirectShow-Einbindung kann man in der Graphik Schnittstelle ein Vorschaubild errechnen.
 
Beide Varianten können ohne eine echte Ausgabe am Bildschirm durchgeführt werden.
Das Erstellen über ein MediaPlayer Control ist recht zuverlässig, verzögert sich allerdings zum Start durch den Öffnungsvorgang im Player ein wenig.
 
Darstellung durch MediaPlayer Control

 
Umsetzung:
1: erstellen eines MediaPlayer Elements mit ScrubbingEnabled und MediaOpenEvent

private void add_Video_Image(string sFullname_Path_of_Video)
{
//----------------< add_Video_Image() >----------------
//*create mediaplayer in memory and jump to position
MediaPlayer mediaPlayer = new MediaPlayer();
 
mediaPlayer.MediaOpened += new EventHandler(mediaplayer_OpenMedia);
mediaPlayer.ScrubbingEnabled = true;
..
..
//----------------</ add_Video_Image() >----------------
}

 
2: Öffnen eines Videos im Mediaplayer

 
mediaPlayer.Open(new Uri(sFullname_Path_of_Video));
mediaPlayer.Position = TimeSpan.FromSeconds(0);
//----------------</ add_Video_Image() >----------------
 

 
3: Im OpenMedia Event den Ausgabe-Bereich des MediaPlayers zur Bildschirmausgabe vorbereiten

//< draw video_image >
MediaPlayer mediaPlayer = sender as MediaPlayer;
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
drawingContext.DrawVideo(mediaPlayer, new Rect(0, 0, 160, 100));
drawingContext.Close();

 
4: Den MediaPlayer Bereich in eine Bitmap übergeben

double dpiX = 1 / 200;
double dpiY = 1 / 200;
RenderTargetBitmap bmp = new RenderTargetBitmap(160, 100, dpiX, dpiY , PixelFormats.Pbgra32);
bmp.Render(drawingVisual);
//</ draw video_image >
 

 
5: Die Bitmap in eine Image zur Darstellung laden

//< set Image >
Image newImage = new Image();
newImage.Source = bmp;
newImage.Stretch = Stretch.Uniform;
newImage.Height = 100;
//</ set Image >
 
//< add >
panel_Images.Children.Add(newImage);
//</ add >
 

 
 
 
 
Komplettes C# Code Beispiel zum Darstellen der Einzelbilder eines Videos, entsprechend der oberen Darstellung

private void add_Video_Image(string sFullname_Path_of_Video)
{
//----------------< add_Video_Image() >----------------
//*create mediaplayer in memory and jump to position
MediaPlayer mediaPlayer = new MediaPlayer();
 
mediaPlayer.MediaOpened += new EventHandler(mediaplayer_OpenMedia);
mediaPlayer.ScrubbingEnabled = true;
mediaPlayer.Open(new Uri(sFullname_Path_of_Video));
mediaPlayer.Position = TimeSpan.FromSeconds(0);
//----------------</ add_Video_Image() >----------------
}
 
private void mediaplayer_OpenMedia(object sender, EventArgs e)
{
//----------------< mediaplayer_OpenMedia() >----------------
//*create mediaplayer in memory and jump to position
//< draw video_image >
MediaPlayer mediaPlayer = sender as MediaPlayer;
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
drawingContext.DrawVideo(mediaPlayer, new Rect(0, 0, 160, 100));
drawingContext.Close();
 
double dpiX = 1 / 200;
double dpiY = 1 / 200;
RenderTargetBitmap bmp = new RenderTargetBitmap(160, 100, dpiX, dpiY , PixelFormats.Pbgra32);
bmp.Render(drawingVisual);
//</ draw video_image >
 
//< set Image >
Image newImage = new Image();
newImage.Source = bmp;
newImage.Stretch = Stretch.Uniform;
newImage.Height = 100;
//</ set Image >
 
//< add >
panel_Images.Children.Add(newImage);
//</ add >
//----------------< mediaplayer_OpenMedia() >----------------
}

 
 
Betrifft: WPF, C#, MediaPlayer, Drawing, Render, Bitmap, Image
Mobile
»
WPF: Bitmap verkleinern mit TransformedBitmap
»
WPF: ImageSource als Bild verkleinern
»
WPF: Vorschau Bilder von Videos erstellen
»
WPF Fehler: 2147024864 Der Prozess kann nicht auf die Datei zugreifen, da sie bereits von einem anderen Prozess verwendet wird.
»
WPF: Bilder als Thumbnails laden
»
WPF: Image zur Laufzeit erstellen

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de