Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Thomas Lebrun

Tout sur WPF, LINQ, C# et .NET en général !

[WPF] Comment créer une miniature d'une vidéo ?

Pour les besoins d'un projet récent, il m'a fallut trouver le moyen de créer une miniature d'une vidéo, sous forme d'image.

Après avoir parcouru le Web à la recherche d'une solution, je suis tomber sur le code suivant, qui s'avère être complètement fonctionnel:

// Create a screenshot of the video

VideoDrawing vd = new VideoDrawing();

m_Player.Open(new Uri(this.tbFile.Text, UriKind.Relative));

 

vd.Rect = new Rect(0, 0, 120, 100);

vd.Player = m_Player;

 

m_Player.MediaOpened += new EventHandler(player_MediaOpened);

m_Player.Play();

 

m_Player.Position = TimeSpan.FromSeconds(2);

 

private void player_MediaOpened(object sender, EventArgs e)

{

    DrawingVisual drawingVisual = new DrawingVisual();

    DrawingContext drawingContext = drawingVisual.RenderOpen();

 

    drawingContext.DrawVideo(m_Player, new Rect(new Point(0, 0), new Point(120, 100)));

    drawingContext.Close();

 

    RenderTargetBitmap rtb = new RenderTargetBitmap(120, 100, 96, 96, PixelFormats.Pbgra32);

    rtb.Render(drawingVisual);

 

    m_Player.Stop();

 

    JpegBitmapEncoder encoder = new JpegBitmapEncoder();

    encoder.Frames.Add(BitmapFrame.Create(rtb));

 

    MemoryStream ms = new MemoryStream();

    encoder.Save(ms);

 

    var byteArrayImage = ms.ToArray();

}

A la fin de la méthode player_MediaOpened, vous disposez d'une Stream que vous pouvez convertir en image pour l'enregistrer ensuite sur le disque dur de la machine Smile

 

A+


Edit: Merci à Yi-Lun Luo, auteur de cette source, de l'avoir mis à disposition ici: http://silverlight.net/forums/t/14104.aspx

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: mercredi 20 août 2008 10:41 par Thomas LEBRUN
Classé sous : ,

Commentaires

jupolj a dit :

"Après avoir parcouru le Web à la recherche d'une solution, je suis *tombÉ* sur le code suivant, qui s'avère être complètement fonctionnel"

Et vu que visiblement tu ne t'es pas fait mal, tu pourrais partager la source, afin de rendre à César ce qui est à César ?

(oh, et puis tant que j'y suis : stream =~ flux -> masculin, alors autant dire "un stream", non ?)

# août 21, 2008 09:56

Thomas LEBRUN a dit :

Oula, mais nous avons affaire à un comique dis donc :)

Pour ton information, j'ai déjà partagé la source: il s'agit du code source que j'ai posté plus haut.

Maintenant, tu souhaites sans doute que je donne le nom de l'auteur, ce que j'aurai fait volontier (car c'est tout à fait normal) si je le connaissais/retrouvais: les seules choses dont je me souviens, c'est que j'ai trouvé le code source sur les forums de Silverlight et que l'auteur était quelqu'un de chez Microsoft.

Mais si tu arrives à me retrouver le post/auteur, je serais ravi de rendre à Césart ce qui appartient à César :)

# août 21, 2008 10:25

Thomas LEBRUN a dit :

Voila, pour éviter tout problème, j'ai cherché pour finalement retrouver l'auteur et l'indiquer dans le post.

# août 21, 2008 10:55

jupolj a dit :

Et bien voilà, merci :)

D'accord, je bout de code suffira à 80% des gens. Par contre, les 20% restant aimeront soit avoir la source, soit potentiellement trouver d'autre informations qui pourraient être intéressantes et publiées avec ou à côté du bout de code. Ça ne coûte pas grand chose pour toi (puisque tu l'a trouvé, tu as forcément un lien à mettre) et ça peut intéresser des gens.

(et avec une faute à César)

# août 21, 2008 14:11
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [Refactoring] ReSharper pour Visual Studio 2010 (Preview) par Thomas Jaskula le il y a 54 minutes

- [Refactoring] Analyser vos exceptions avec ReSharper Exceptional par Thomas Jaskula le il y a 2 heures et 8 minutes

- SharePoint 2007 : patterns & practices SharePoint Guidance par Philippe Sentenac [MVP SharePoint] le il y a 15 heures et 48 minutes

- [Visual Studio 2010] Les tests cases c’est bien, mais je vais devoir tout réécrire ? par Etienne Margraff le il y a 16 heures et 44 minutes

- MVP[Gribouillon].AddYear par The Grib's Lair [Sébastien PICAMELOT - MVP SharePoint] le il y a 16 heures et 59 minutes

- Clinique INSIA - Projet de fin d’Etudes (Silverlight 3 MVVM et OutOfBrowser, WCF, TFS) - Part 1 par David REI le 07-02-2009, 23:38

- C’est la crise ? Bah pourquoi cramer du budget pub alors ? par Nix's Blog le 07-02-2009, 15:31

- Soyons MVP ! par TheSaib .NET blog le 07-02-2009, 12:15

- SharePoint : Gestion des Erreurs 6398, 7076 et 6482 par Blog Technique de Romelard Fabrice le 07-02-2009, 11:53

- EF avec WPF par Matthieu MEZIL le 07-02-2009, 10:18