Comment puis-je obtenir une miniature vidéo en .Net?
-
03-07-2019 - |
Question
Je souhaite implémenter une fonction qui récupère une seule image d'une vidéo d'entrée afin de pouvoir l'utiliser comme vignette.
Quelque chose dans ce sens devrait fonctionner:
// filename examples: "test.avi", "test.dvr-ms"
// position is from 0 to 100 percent (0.0 to 1.0)
// returns a bitmap
byte[] GetVideoThumbnail(string filename, float position)
{
}
Quelqu'un sait-il comment faire cela dans .Net 3.0?
La solution correcte sera la "meilleure". mise en œuvre de cette fonction. Points bonus pour éviter la sélection d'images vierges.
La solution
J'ai fini par lancer ma propre classe autonome (avec la méthode unique que j'ai décrite), la source peut être affichée ici. . Le navigateur de média est , mais je suis content que le code que j'ai écrit pour ce fichier soit du domaine public. N'oubliez pas qu'il utilise interop du projet directshow.net . Vous devrez donc effacer cette partie de la code avec eux.
Cette classe ne fonctionnera pas pour les fichiers DVR-MS, vous devez injecter un filtre d'affichage direct pour ceux-ci.
Autres conseils
Ce projet fera l'affaire pour les AVI: http: //www.codeproject .com / KB / audio-video / avifilewrapper.aspx
Pour tout autre format, vous pouvez regarder en directshow. Quelques projets pourraient vous aider:
http://sourceforge.net/projects/directshownet/
http://code.google.com/p/slimdx/
1- Obtenez la dernière version de ffmpeg.exe sur: http://ffmpeg.arrozcru.org/builds/
2- Extrayez le fichier et copiez le fichier ffmpeg.exe sur votre site Web
3- Utilisez ce code:
Process ffmpeg;
string video;
string thumb;
video = Server.MapPath("first.avi");
thumb = Server.MapPath("frame.jpg");
ffmpeg = new Process();
ffmpeg.StartInfo.Arguments = " -i "+video+" -ss 00:00:07 -vframes 1 -f image2 -vcodec mjpeg "+thumb;
ffmpeg.StartInfo.FileName = Server.MapPath("ffmpeg.exe");
ffmpeg.Start();
Certaines www.mitov.com peuvent vous aider. C'est un wrapper générique pour la fonctionnalité Directshow, et je pense que l'une des démos montre comment prendre une image d'un fichier vidéo.
Cela vaut également la peine de voir:
http://www.codeproject.com/Articles/ 13237 / Extraire les images à partir de fichiers vidéo