2009-12-08 3 views
11

Il existe une caméra Web IP dans laquelle j'ai écrit une classe .NET il y a un certain temps. Il s'agit essentiellement d'une implémentation de Timer qui envoie un script CGI instantané à la caméra toutes les cinq secondes. La caméra elle-même est très rudamentaire; Je n'ai aucune sorte d'API avec laquelle travailler, la seule chose que je peux faire par programmation (à distance) est d'invoquer ce script. Le script renvoie une image JPEG 640x480. Simple. Maintenant, ce que je dois être en mesure de faire est de prendre une journée de ces images, et de créer un flux vidéo AVI "time-lapse" qui sera finalement intégré dans une page Web. Comment puis-je faire cela avec VB.NET?Création d'un flux vidéo (AVI) à partir d'une série d'images

+2

Découvrez ce projet: http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx –

+0

Nice !! Êtes-vous le même nobugz des forums MSDN? –

Répondre

15

.net ne prend pas directement en charge les formats vidéo. Votre meilleure option serait d'utiliser un outil tiers pour générer le fichier .avi.

ffmpeg est une option. Vous pouvez y accéder directement via une ligne de commande comme ceci:

ffmpeg -f image2 -i img%d.jpg /output/a.mpg 

Vous devez nommer vos images img1.jpg, img2.jpg etc. Pour plus de détails, voir le ffmpeg faq. Vous devriez également trouver des détails dans la FAQ sur la façon de produire différents formats vidéo.

Vous pouvez démarrer un processus à partir de vb en utilisant Process.Start(). Quelque chose comme ceci:

Process.Start("ffmpeg.exe", "-f image2 -i img%d.jpg /output/a.mpg") 

Vous pouvez également jeter un oeil à ffmpeg-sharp ou Tao.FFmpeg, ils enveloppent .net pour les bibliothèques ffmpeg. Je n'ai pas essayé personnellement, mais on dirait que ça pourrait vous aider.

Une autre alternative serait de jeter un oeil à MEncoder, qui a des fonctionnalités similaires. Vous devriez être capable de rechercher une ligne de commande similaire pour cet outil.

[SO question connexe: 271003]

+0

Cela ressemble à une bonne solution. Espérait une bibliothèque, mais je peux lancer ce processus séparé sans problème. –

+0

@Josh. J'ai ajouté des liens vers des bibliothèques de wrappers que vous pourriez vouloir extraire. –

+0

ffmpeg-sharp ne compile pas, et je ne trouve pas n'importe où pour télécharger Tao.FFmpeg –

0

Plusieurs outils de ligne de commande peuvent prendre une série d'images et générer un fichier AVI. Je vous suggère d'appeler l'un d'eux de votre application.

Je voudrais fournir des liens vers des suggestions, mais cela fait des années que j'en ai utilisé une.

Edit: apparemment, vous pouvez le faire en utilisant ffmpeg: http://ffmpeg.org/ffmpeg-doc.html

Pour créer une vidéo à partir d'images:

ffmpeg -f image2 -i foo-% 03d.jpeg -r 12 - s WxH foo.avi

la syntaxe foo-% 03d.jpeg spécifie à utiliser un nombre décimal composé de trois chiffres rembourré avec des zéros pour exprimer le numéro de séquence. C'est la même syntaxe supportée par la fonction C printf , mais seuls les formats acceptant un entier normal conviennent.

+1

Darn, trop tard. D'autres ont posté pendant que j'ajoutais ma modification. – Jermismo

1

Ceci est un wrapper C# par quelqu'un à CodeProject:

http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx

Cette enveloppe doit vous fournir ce dont vous avez besoin.

+0

nobugz fourni ce lien dans le commentaire. –

+0

Ah, ce n'était pas là quand j'ai posté cette réponse (n'avait pas rafraîchi la page) –

Questions connexes