2009-12-08 3 views
11

Es gibt eine IP-Web-Kamera, die ich eine .NET-Klasse für vor einiger Zeit geschrieben hat. Es ist im Grunde eine Timer-Implementierung, die alle fünf Sekunden ein Snapshot-CGI-Skript von der Kamera anpingt. Die Kamera selbst ist sehr rudimentär; es hat keine Art von API für mich zu arbeiten, das einzige, was ich programmgesteuert (remote) tun kann, ist dieses Skript aufrufen. Das Skript gibt ein 640 x 480-JPEG-Bild zurück. Einfach.Erstellen Sie einen Video-Stream (AVI) aus einer Reihe von Bildern

Jetzt, was ich tun muss, ist, nehmen Sie diese Bilder einen Tag wert und erstellen Sie einen "Zeitraffer" AVI-Videostream, der schließlich in eine Webseite eingebettet wird. Wie kann ich das mit VB.NET machen?

+2

Schauen Sie sich dieses Projekt an: http://www.codeproject.com/KB/audio-video/avifilewrapper.aspx –

+0

Schön !! Bist du der gleiche nobugz von MSDN Foren? –

Antwort

15

.net unterstützt Videoformate nicht direkt. Ihre beste Option wäre, ein Drittanbieter-Tool zu verwenden, um das .avi zu generieren.

ffmpeg ist eine Option. Man könnte es direkt wie diese über eine Befehlszeile zugreifen:

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

Sie würden Ihre Bilder img1.jpg nennen müssen, img2.jpg etc. Für weitere Einzelheiten der ffmpeg faq sehen. Sie sollten auch Details in der FAQ finden, um verschiedene Videoformate auszugeben.

Sie können einen Prozess von vb mit Process.Start() starten. Etwas wie folgt aus:

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

Sie auch einen Blick auf ffmpeg-sharp oder Tao.FFmpeg nehmen könnten, sie sind .net Wrapper für die ffmpeg-Bibliotheken. Ich habe es auch nicht persönlich versucht, aber es sieht so aus, als könnte es dir helfen.

Eine andere Alternative wäre, einen Blick auf MEncoder zu werfen, die ähnliche Funktionalität hat. Sie sollten eine ähnliche Befehlszeile für dieses Tool suchen können.

[Verwandte SO Frage: 271003]

+0

Sieht nach einer guten Lösung aus. Hoffte auf eine Bibliothek, aber ich kann diesen separaten Prozess kein Problem starten. –

+0

@Josh. Ich habe einige Links zu Wrapper-Bibliotheken hinzugefügt, die Sie möglicherweise auschecken möchten. –

+0

ffmpeg-sharp kompiliert nicht, und ich kann nirgendwo finden, um Tao.FFmpeg –

0

Es gibt mehrere Befehlszeilentools, die eine Reihe von Bildern aufnehmen und eine AVI-Datei ausgeben können. Ich würde vorschlagen, dass Sie einen von ihnen aus Ihrer App anrufen.

Ich würde Links zu Vorschlägen bieten, aber es ist Jahre her, seit ich eines verwendet habe.

Edit: offenbar können Sie diese mit ffmpeg tun: http://ffmpeg.org/ffmpeg-doc.html

Für ein Video aus vielen Bildern zu erstellen:

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

die Syntax foo-% 03d.jpeg angibt eine Dezimalzahl aus drei Ziffern bestehen verwenden aufgefüllt mit Nullen die Sequenznummer zu exprimieren. Es ist die gleiche Syntax, die von der C printf Funktion unterstützt wird, aber nur Formate, die eine normale Ganzzahl akzeptieren, sind geeignet.

+1

Darn, zu spät. Andere haben gepostet, während ich meine Bearbeitung hinzugefügt habe. – Jermismo

1

Dies ist ein C# Wrapper von jemand bei Codeproject:

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

Das Wrapper mit Ihnen zur Verfügung stellen sollten, was Sie brauchen.

+0

nobugz lieferte diesen Link im Kommentar. –

+0

Ah, es war nicht da, als ich diese Antwort gepostet habe (hatte die Seite nicht aktualisiert) –

Verwandte Themen