2009-11-04 3 views
6

Est-il possible de créer une image miniature d'une vidéo en C# (comme la première image)?Miniature vidéo C#

Petite mise à jour: J'ai besoin d'une image miniature d'une vidéo FLV en C# depuis que j'utilise Flex pour afficher des vidéos. Et oui, des liens vers certaines bibliothèques seraient utiles.

+0

Oui serait la réponse courte à votre question – sshow

Répondre

7

je peux penser à deux options du haut de ma tête:

  1. Utilisez un outil externe, comme ffmpeg, pour générer les vignettes. C'est probablement la solution la plus couramment implémentée à ce problème.
  2. Analyser le fichier FLV et envoyer uniquement le fichier à la fin de la première I Frame. (Vous pouvez trouver la logique d'analyse syntaxique dans le code qui vous permet de chercher dans le milieu d'une FLV par marque temporelle
+0

FFMPEG est la seule solution que j'ai pu trouver. Il existe certaines bibliothèques .NET qui fournissent un wrapper géré autour de FFMPEG, mais je n'ai trouvé aucune documentation sur la façon de les utiliser. Je suis intéressé d'entendre quelle solution vous venez avec! –

+0

Je viens de débourser à ffmpeg et analyser la sortie. Cela fonctionne bien pour moi et n'est pas aussi complexe ou hacky que cela puisse paraître. J'ai lu sur l'API C à ffmpeg, mais cela semble être trop d'efforts. –

4

Il existe des bibliothèques Open Source que vous pouvez utiliser pour cela. Découvrez OpenCVDotNet, un wrapper .NET géré pour OpenCV, une bibliothèque "vision par ordinateur". Here's a link to a tutorial vous pouvez trouver utile.

+0

Ma première impression c'est qu'il ne supporte que avi ... et j'ai besoin de flv pour être supporté. Mais je vais devoir vérifier cela pour être sûr. –

1

Cela fonctionne.

ShellFile thumbNail = ShellFile.FromFilePath(<fullpath and filename>); 
Bitmap thumbSmall = thumbNail.Thumbnail.MediumBitmap; 
Bitmap thumbLarge = thumbNail.Thumbnail.LargeBitmap; 
videoThumb_Small.Images.Add(thumbSmall); 
videoThumb_Large.Images.Add(thumbLarge); 

où « videoThumb _ ????? » = ImageList (où contrôle de la taille de l'image à afficher à nouveau) lent comme l'enfer lors de la recherche de différents formats MIME, mais assez rapide avec les mêmes types besoins:..

using Microsoft.WindowsAPICodePack.Shell; 
using Microsoft.WindowsAPICodePack; 

et vous pouvez obtenir Microsoft.WindowsAPICodePack du paquet NuGet avec Même nom que FFMpeg, Vlc.Dotnet ou aXMediaPlayer (WMP), ils sont tous si nul que j'ai testé (Vlc ne fonctionne même pas comme il se doit, FFmpeg a encore besoin de 500 millions de lignes avant d'obtenir le même résultat et aMediaPlayer).

Par exemple, si vous utilisez ListView avec quelque chose comme sous-éléments même:

for(int mememe = 0; mememe < stuff_counter; mememe++) 
{ 
listview1.Items.Add("strings", mememe).SubItems.Add("strings" + mememe.ToString()); 
} 

serait alors lire le numéro d'index correct de ImageList

Questions connexes