Question

Quelqu'un at-il un moyen fiable connu pour créer une vidéo à partir d'une série de fichiers d'image? Avant de me mod vers le bas pour ne pas chercher la réponse avant de poster la question, et avant de tirer hors un message simple comme « utiliser FFMPEG, » lire le reste de ce message.

Je suis en train de créer une vidéo, peu importe trop quel format tant qu'il est largement pris en charge, à partir d'une série d'images (.jpg, .bmp, etc.). Ma plate-forme est Windows Server 2008, 64 bits. Si je peux faire de la vidéo à partir de mon programme C #, qui est très bien, mais je ne suis pas opposé à écrire une série de fichiers d'images dans un répertoire, puis tirer hors d'un programme externe pour faire une vidéo à partir de ces images.

Les seules contraintes sont les suivantes: il doit travailler sur mon système Windows Server 2008, et être scriptable. Autrement dit, aucun programme de GUI qui nécessitent une intervention de l'opérateur.

J'ai trouvé un certain nombre de questions similaires sur StackOverflow, et ont essayé plusieurs solutions, toutes avec des degrés divers de frustration et aucun avec tout comme le succès.

FFMPEG ressemble à un grand programme. Peut-être qu'il est, sur Linux. Les deux fenêtres construit j'ai téléchargé sont brisés. Compte tenu de cette ligne de commande:

  ffmpeg -r 1 -f image2 -i jpeg\*.jpg video.avi

L'un des builds lit les images, puis se bloque en raison de la prévention de l'exécution des données. L'autre lit le premier fichier et recrache ensuite un message d'erreur qui dit « ne peut pas trouver le codec approprié pour le fichier jpeg / image2.jpg ». Utile, ça. Dans tous les cas, FFMPEG ressemble à un non-démarrage sous Windows.

Une réponse à un précédent commentaire recommandé Splicer. Il ressemble assez bon code. Je compila les échantillons et essayé de courir, mais on m'a donné un certain message d'erreur cryptique sur un fichier non trouvé. Il ressemble à une classe COM est pas enregistrée. Je suppose que je dois installer quelque chose (DirectShow, peut-être, bien que je pensais que cela a déjà été installé?). Selon ce qui est nécessaire, je pourrais avoir un moment difficile de justifier son installation sur un serveur. ( « Quoi? Pourquoi avez-vous besoin que sur un serveur? »)

Une autre réponse a suggéré la bibliothèque AVIFile du Code du projet. Cela semble assez simple: un emballage autour du sous-système Windows AVIFile. Sauf que les fichiers AVI crée le paquet semble avoir toutes les images, mais seulement la première image montre quand je joue le fichier AVI dans Windows Media Player. Eh bien, et si vous essayez de créer une vidéo compressée, le programme déclenche une exception.

Alors, je suis à me demander s'il y a un bon moyen fiable de faire ce que je veux: sur un système Windows, créez un fichier AVI ou un autre format de fichier vidéo commun d'une série d'images, que ce soit via une API .NET ou en utilisant un programme externe. Toute aide?

Était-ce utile?

La solution

Après avoir travaillé avec un certain temps et jeter un oeil à x264 et VideoLAN, je suis retourné à Splicer. Il se trouve que le message d'erreur cryptique est due à une erreur dans mon code.

On dirait que Splicer va faire ce que je veux. Créer des vidéos à partir d'une programmation série d'images

Merci à tous ceux qui ont répondu.

Autres conseils

Vous pouvez utiliser VideoLAN et je le recommande.

J'ai eu une expérience directe dans une application C # avec VideoLAN faire ces deux choses:

  1. L'intégration d'une visionneuse VLC dans mon application C # (il y a 3-4 C # "emballages" pour le veiwer VLC).
  2. Utilisation de vlc.exe dans un processus séparé en lui envoyant des arguments de ligne de commande.

Le fait que VideoLAN dispose d'une interface de ligne de commande est une grande chose. Et VLC prend en charge une option de ligne de commande qui désactive tout élément visuel; donc l'interface graphique VLC ne pop et ne ni une fenêtre de ligne de commande. Ainsi, dans une application C # vous pouvez ferme les travaux liés à la vidéo au client VLC. C # a la classe de processus qui peut gérer vos instances vlc.exe pour vous. Il finit par être une solution assez propre.

Le traitement de la vidéo sur Windows (encodage et la lecture) est un vrai bourbier. Et .NET ne va pas vous aider du tout -. Vous allez toujours être soit PInvoking / COM-interoping API natives ou en utilisant un wrapper .NET que quelqu'un d'autre a construit pour faire la même chose

Quoi qu'il en soit, je ne peux pas dire que je l'ai utilisé, mais un bon pari semble être le

Je l'ai utilisé mplayer 's MEncoder pour créer AVI (avec les codecs msmpeg4 / mp3, lisible par par défaut avec Windows Media Player) à partir de fichiers TGA sur linux comme ceci:

mencoder mf://*.tga -mf fps=25:type=tga \
  -audiofile /tmp/test.mp3 -oac copy \
  -of lavf -ovc lavc \          
  -lavcopts vcodec=msmpeg4v2:mbd=2:mv0:trell:cbp:last_pred=3:vbitrate=3000 \
  -o /tmp/test.avi

Je sais que mplayer a une version de Windows.

Au lieu de passer par tous les tracas, vous pouvez Coppy toutes les images que vous souhaitez inclure dans votre vidéo sur le presse-papiers et l'ont importé à Windows Live Movie Maker (dynamique, bien sûr!) Et avez le compiler pour vous!

Tout cela peut être fait par le code, mais cette façon, vous ne devez pas créer vous-même. Comme vous avez dit que la plate-forme était sous Windows, et toutes les fenêtres ont comps de Windows Live Movie Maker installé, il ne devrait pas être un problème pour toute personne utilisant votre application à moins que

a) Ils désinstallés Windows Live Movie Maker

b) Ils utilisent un ordinateur exécutant une version de Windows plus de 8 ou 9 ans ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top