[c#] Arbeitsweise zum Erstellen von Videos aus Bildern in C #


1 Answers

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

Ich habe direkte Erfahrung in einer C # -Anwendung mit VideoLan, die diese zwei Dinge macht:

  1. Einbetten eines VLC-Viewers in meine C # -Anwendung (es gibt 3-4 C # "Wrapper" für den VLC-Veiler).
  2. Verwenden Sie vlc.exe in einem separaten Prozess, indem Sie Befehlszeilenargumente senden.

Die Tatsache, dass VideoLan über eine Befehlszeilenschnittstelle verfügt, ist eine großartige Sache. Und VLC unterstützt eine Befehlszeilenoption, die jedes visuelle Element deaktiviert. Daher wird die VLC-GUI nicht angezeigt und auch kein Befehlszeilenfenster. Daher können Sie in einer C # -Anwendung die Videoarbeit an den VLC-Client verteilen. C # hat die Process-Klasse, die Ihre vlc.exe-Instanzen für Sie verwalten kann. Es endet damit, eine ziemlich saubere Lösung zu sein.

Question

Hat jemand eine zuverlässige Methode, ein Video aus einer Reihe von Bilddateien zu erstellen? Bevor Sie mich für die Suche nach der Antwort vor dem Posten der Frage nicht modifizieren und bevor Sie eine einfache Nachricht wie "FFMPEG verwenden" auslösen, lesen Sie den Rest dieser Nachricht.

Ich versuche, ein Video zu erstellen, es spielt keine Rolle, welches Format, solange es weit verbreitet ist, aus einer Reihe von Bildern (.jpg, .bmp, etc.). Meine Plattform ist Windows Server 2008, 64-Bit. Wenn ich das Video innerhalb meines C # -Programms machen kann, ist das großartig, aber ich bin nicht abgeneigt, eine Reihe von Bilddateien in ein Verzeichnis zu schreiben und dann ein externes Programm abzufeuern, um aus diesen Bildern ein Video zu machen.

Die einzigen Einschränkungen sind: Es muss auf meinem Windows Server 2008-System funktionieren und skriptfähig sein. Das heißt, keine GUI-Programme, die einen Bedienereingriff erfordern.

Ich habe eine Reihe ähnlicher Fragen zu gestellt und verschiedene Lösungen ausprobiert, die alle unterschiedlich frustriert waren und keine mit Erfolg.

FFMPEG sieht wie ein großartiges Programm aus. Vielleicht ist es, unter Linux. Die zwei Windows-Builds, die ich heruntergeladen habe, sind kaputt. Angesichts dieser Befehlszeile:

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

Eines der Builds liest die Bilder und stürzt dann aufgrund der Verhinderung der Datenausführung ab. Der andere liest die erste Datei und spuckt dann eine Fehlermeldung aus, die besagt, dass kein geeigneter Codec für die Datei jpeg / image2.jpg gefunden werden kann. Hilfreich, dass. In jedem Fall sieht FFMPEG wie ein Nicht-Starter unter Windows aus.

Eine Antwort auf einen früheren Beitrag empfohlen Splicer . Es sieht nach ziemlich gutem Code aus. Ich habe die Beispiele kompiliert und versucht zu laufen, habe aber eine kryptische Fehlermeldung über eine Datei erhalten, die nicht gefunden wurde. Es scheint, dass eine COM-Klasse nicht registriert ist. Ich nehme an, ich muss etwas installieren (DirectShow, vielleicht, obwohl ich dachte, dass das bereits installiert war?). Je nachdem, was benötigt wird, kann es für mich schwierig sein, die Installation auf einem Server zu rechtfertigen. ("Was? Warum brauchst du das auf einem Server?")

Eine andere Antwort schlug die AviFile- Bibliothek von Code Project vor. Das sieht einfach genug aus: ein Wrapper um das Windows-AviFile-Subsystem. Abgesehen davon, dass die AVI-Dateien, die das Paket erstellt, alle Frames zu haben scheinen, aber nur der erste Frame zeigt, wenn ich die AVI im Windows Media Player spiele. Nun, das und wenn Sie versuchen, ein komprimiertes Video zu erstellen, löst das Programm eine Ausnahme aus.

Also frage ich mich, ob es eine gute, zuverlässige Möglichkeit gibt, das zu tun, was ich will: Auf einem Windows-System erstellen Sie ein AVI oder ein anderes gebräuchliches Videodateiformat aus einer Reihe von Bildern, entweder über eine .NET-API oder über ein externes Programm. Irgendeine Hilfe?




Ich habe mplayer 's mencoder verwendet, um AVI (mit Codecs msmpeg4 / mp3, lesbar standardmäßig mit Windows Media Player) aus TGA - Dateien unter Linux wie folgt zu erstellen:

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.




Related