Frage

Hat jemand eine bekannte zuverlässige Möglichkeit, ein Video aus einer Reihe von Bilddateien zu erstellen? Bevor Sie mich mod unten für nicht für die Antwort suchen, bevor die Frage der Veröffentlichung, und bevor Sie eine einfache Botschaft wie abfeuern „verwenden FFMPEG,“ lesen Sie den Rest dieser Nachricht.

Ich versuche, ein Video zu erstellen, es spielt keine Rolle, zu viel, welches Format, solange es allgemein unterstützt wird, aus einer Reihe von Bildern (.jpg, .bmp, etc.). Meine Plattform ist Windows Server 2008 64-Bit. Wenn ich das Video aus meinem C # Programm machen, das ist toll, aber ich bin nicht abgeneigt, eine Reihe von Bilddateien in ein Verzeichnis zu schreiben und dann ein externes Programm abzuzufeuern, um ein Video von diesen Bildern zu machen.

Die einzigen Einschränkungen sind: es auf meinem Windows Server 2008-System arbeiten muß, und skriptfähig sein. Das heißt, keine GUI-Programme, den Benutzereingriff erforderlich ist.

fand ich eine Reihe von ähnlichen Fragen auf Stackoverflow, und haben einige der Lösungen versucht, alle mit unterschiedlichem Grad der Frustration und keiner mit etwas unterschiedlichem Erfolg.

FFMPEG sieht aus wie ein großes Programm. Vielleicht ist es, auf Linux. Die beiden Windows-Builds ich gebrochen heruntergeladen. In Anbetracht dieser Befehlszeile:

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

Einer der Builds liest die Bilder und dann stürzt aufgrund von Datenausführungsverhinderung. Der andere liest die erste Datei und dann spuckt eine Fehlermeldung aus, die besagt, „nicht geeignet Codec für Datei jpeg / image2.jpg finden können“. Hilfreich, dass. Auf jeden Fall sieht FFMPEG wie ein Nicht-Starter unter Windows.

Eine Antwort auf eine vorherige Buchung empfohlen Splicer href="http://www.codeplex.com/splicer". Es sieht aus wie ziemlich gut Code. Ich die Proben zusammengestellt und versuchte zu laufen, bekam aber eine kryptische Fehlermeldung über eine Datei nicht gefunden. Es sieht aus wie eine COM-Klasse nicht registriert ist. Ich glaube, ich brauche etwas zu installieren (vielleicht Directshow, obwohl ich dachte, dass bereits installiert wurde?). Je nachdem, was erforderlich ist, könnte ich habe eine schwierige Zeit auf einem Server seine Installation zu rechtfertigen. ( "Was? Warum brauchen Sie, dass auf einem Server?")

Eine andere Antwort vorgeschlagen, die avifile Bibliothek von Code Project. Das sieht einfach genug: ein Wrapper um den Windows-avifile Subsystem. Abgesehen davon, dass die AVI-Dateien erstellt das Paket alle Frames zu haben scheint, aber nur das erste Bild zeigt, wenn ich die AVI in Windows Media Player abspielen. Nun, das und wenn Sie versuchen, eine komprimierte Video zu erstellen, führt das Programm eine Ausnahme aus.

Also, ich frage mich verlassen, wenn es eine gute, zuverlässige Art und Weise zu tun, was ich will: auf einem Windows-System, ein AVI oder anderes gängiges Video-Dateiformat aus einer Reihe von Bildern, entweder über einen .NET-API erstellen oder mit einem externen Programm. Jede Hilfe?

War es hilfreich?

Lösung

Nach der Arbeit mit ihm eine Weile, und einen Blick auf x264 und VideoLan nehmen, ging ich zu Splicer zurück. Es stellt sich heraus, dass die kryptische Fehlermeldung in meinem Code auf einen Fehler zurückzuführen ist.

Es sieht aus wie Splicer tun, was ich will. Programmatisch Videos aus einer Reihe von Bildern erstellen

Danke an alle, die geantwortet haben.

Andere Tipps

Sie können VideoLan verwenden und ich würde es empfehlen.

Ich habe direkte Erfahrung in einer C # -Anwendung habe mit VideoLan diese zwei Dinge zu tun:

  1. einen VLC-Viewer in meiner C # Anwendung Einbetten (es gibt 3-4 C # "Wrapper" für den VLC veiwer).
  2. Verwendung von vlc.exe in einem separaten Prozess durch Befehlszeilenargumente senden.

Die Tatsache, dass VideoLan eine Kommandozeilen-Schnittstelle hat, ist eine große Sache. Und VLC unterstützt eine Befehlszeilenoption, die ein visuelles Element deaktiviert; so dass der VLC-GUI nicht Pop-up und auch nicht ein Kommandozeilen-Fenster. So wird in einer C # -Anwendung können Sie das Video bezogene Arbeit mit dem VLC-Client Farm aus. C # hat die Process-Klasse, die Ihre vlc.exe Instanzen für Sie verwalten können. Es endet eine ziemlich saubere Lösung zu sein.

Der Umgang mit Video auf Windows (Codierung und Wiedergabe) ist ein echter Morast. Und .NET wird nicht gehen Sie überhaupt helfen -. Sie gehen zu sein, immer entweder PInvoking / COM-interoping nativen APIs oder mit einem .NET-Wrapper, der jemand anderes gebaut hat, das Gleiche zu tun

Wie auch immer, ich kann nicht sagen, dass ich es benutzt habe, aber eine gute Wette scheint der

ich verwendet habe, mplayer 's mencoder zu AVI erstellen (mit Codecs msmpeg4 / mp3, lesbar Standard mit Windows Media Player) von TGA-Dateien unter linux wie folgt aus:

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

Ich weiß, MPlayer hat eine Windows-Version haben.

Statt nur gehen durch all die Probleme, können Sie alle Bilder coppy, die Sie in die Zwischenablage in Ihrem Video aufgenommen werden soll, und haben es in Windows Live Movie Maker importiert (dynamisch, natürlich!) Und haben es kompilieren für Sie!

All dies kann durch den Code getan werden, aber diese Weise müssen Sie nicht, es selbst zu erstellen. Wie Sie gesagt, dass die Plattform war Windows und all Windows-Comps Windows Live Movie Maker installiert haben, so sollte es kein Problem für jemanden mit Ihrer Anwendung, es sei denn

sein

a) Sie deinstalliert Windows Live Movie Maker

b) Sie verwenden einen Computer auf einer Windows-Version ausgeführt werden mehr als 8 oder 9 Jahre alt ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top