C# extraire les images à partir d'une partie d'un fichier vidéo
L'aide d'AForge ffmpeg wrapper vous pouvez extraire les images d'une vidéo à l'aide de la VideoFileReader de classe et de les enregistrer comme une image bitmap.
Voir ce pour l'exemple:
Extraire les images d'un .fichier avi
Mon problème avec cela est que vous ne pouvez pas spécifié par où commencer la lecture de la les cadres. Il commence toujours à partir du début du fichier vidéo.
Mais que si je voulais extraire les images qui sont dans le milieu de deux heures d'un fichier vidéo. À l'aide de la classe que vous auriez à analyser l'ensemble de la première heure, juste pour obtenir ces images.
Que quelqu'un connait un moyen de le réaliser?
Semble qu'ils n'offrent pas une façon de faire cela. Vous pourriez essayer de tricher en coupant le fichier à l'aide d'une autre bibliothèque, ou tout simplement utiliser une autre bibliothèque pour extraire les images pour commencer. EDIT: Vous pouvez tout à fait de débogage et de voir les membres privés de la
Ressemble à une bonne réponse pour moi, n'est-ce pas vous convenir?
Si vous développez pour UWP alors regardez ceci: stackoverflow.com/a/49395297/2733404
VideoFileReader
exemple, et voir si peut-être la Réflexion peut vous aider ici.Ressemble à une bonne réponse pour moi, n'est-ce pas vous convenir?
Si vous développez pour UWP alors regardez ceci: stackoverflow.com/a/49395297/2733404
OriginalL'auteur SiriusNik | 2015-02-12
Vous devez vous connecter pour publier un commentaire.
Si vous savez où dans la vidéo que vous voulez commencer la lecture, il suffit de sauter le nombre approprié de cadres; il n'y a pas besoin de traiter de l'un d'eux.
Cela suppose, bien sûr, que vous le connaissez le numéro de l'image que vous voulez commencer la lecture à partir d', qui vous permet de calculer en multipliant le taux d'images par la date à laquelle vous souhaitez effectuer l'extraction. Dans votre exemple, si la vidéo dure deux heures et que vous souhaitez extraire les images à partir du milieu...
Cela suppose que le
.FrameRate
propriété renvoie la valeur en images par seconde. Malheureusement, le la documentation ne dit pas, donc je ne suis pas sûr de savoir comment il gère les fichiers vidéo avec les non-intégrale cadence des images (c'est à dire 29,97 est une commune de framerate.)videoFrame.Dispose()
(dans le saut de boucle) sinon vous aurez des erreurs après environ 1k images.OriginalL'auteur Reticulated Spline