Wie erstellen Sie einen Film von 5000 PNG-Dateien?
Gut, einfache situation. Ich habe über 5000 Bilder als PNG-Dateien, die ich anzeigen möchten, wie Sie eine animation innerhalb eines .NET-Anwendung. Jedes Bild ist 1920x1080 groß und die PNG-Datei verwendet, die alpha-Kanäle für (Teil -) Transparenz. Und das wird die Dinge zu komplizieren ein bisschen, weil ich würde lieber transparent bleiben. (Aber wenn das unmöglich ist, werde ich nur ein Hintergrundbild hinzufügen, um jedes PNG.)
Wegen der großen Menge der Bilder, die ich brauchen würde, viel Speicher. Naja, eine 1 TB Festplatte und 12 GB Quad-core Intel Xeon system mit Vista 64-bit ist die Lösung dieser Anforderungen an den Arbeitsspeicher. Aber es sei denn, es wird ein Werkzeug erstellt, um die Unterstützung von 64-bit, wird es wohl choke nach dem laden vielleicht 800 von 5000 Bildern. Also brauche ich ein tool, das dies tun kann.
Movie-format ist nicht so wichtig. Weder ist die Kompression, solange die Bild-Qualität bleibt hoch. (Und es gibt einen Grund, warum ich verwendet habe, solch eine riesige Auflösung!) Verlustfreie Komprimierung bevorzugt wäre, wenn. Mein system ist schnell genug zum Abspielen der Film danach wieder, also bin ich nicht besorgt über die Geschwindigkeit. Aber die Bildqualität ist der wichtigste Faktor hier.
Bisher habe ich zwei Optionen:
1) ich finde einige Kostenlose Tools, die mit so viel Daten. (Kostenlos oder sehr Billig.)
2) ich Schreibe so ein tool selber...
Option 1 ist ein bisschen out-of-Platz hier. Außerdem, wie ein software-Ingenieur, meine Hände sind nur zucken, schreiben Sie mich! In C# mit vorzugsweise keine third-party-Bibliotheken. Also meine Frage:
- Wo Sie zu schreiben beginnen, dieses selbst?
(Falls Sie sich Wundern, dieser Film ist eine animation wo eine junge Frau spaziert durch die Straßen von irgendeiner Stadt, vorbei an mehreren Zeichen, die erwähnen Funktionen eines Produkts. Am Ende des Films, Sie geht bis zu ein größer-Zeichen, das zeigt den Namen des Produktes selbst. Und es ist eine lange, kontinuierliche Szene, keine Pausen. Und real Spaß zu schaffen, auch! Und über 10 GB Bilder,...)
Du musst angemeldet sein, um einen Kommentar abzugeben.
wenn Sie windows benutzen, können Sie auch einen Blick in virtualdub.
http://www.virtualdub.org/
es kann AVIs aus bmps, pngs usw.
FFMPEG ist imstande, eine Film-Datei aus einer Reihe von Bild-Dateien, kann dieser link zu Ihrer Bedienungsanleitung zeigt ein Beispiel:
http://ffmpeg.org/ffmpeg-doc.html#SEC5
Als für die Erstellung der Film-Datei programaticcaly keine Bibliotheken von Drittanbietern... das wird ein bisschen schwieriger. Viele Film-Formate sind enorm kompliziert und zu erstellen, ohne eine vorhandene Bibliothek wäre ziemlich schmerzhaft sein(sofern ich deine Frage falsch interpretiert und du bist nicht wirklich zu Fragen, über die Erstellung der eigentlichen encoder)
Wenn ich nicht falsch, deine Frage, dabei eine einfache Implementierung eines YUV-basierten Film-codec könnte machbar sein. HuffYUV ich bin mir dessen bewusst, dass vielleicht nicht zu anspruchsvoll ist.
ffmpeg -r 10 -i %03d.png -pix_fmt yuv420p -vcodec libx264 out.avi
.Zwei Dinge:
Gibt es ein paar Lösungen, die in den Sinn:
Kümmert man sich nicht über die Größe, aber Sie tun Sorge über die Qualität. Erstes würde ich dich Fragen ist: tun Sie wirklich wirklich nicht um die Größe kümmerst? Die meisten video-Formate (vor allem H. 264) wird Ihnen hervorragende Qualität zu einem wesentlich geringeren Dateigröße (glaube 10x). Sie werden kaum in der Lage sein, den Unterschied zu erkennen. Ja, Ihr Inhalt ist HD, aber HD-Inhalte auf TV oder Blu-ray ist auch komprimiert (mit H. 264 oder VC-1), und es ist gut genug für alle anderen. So würde ich ernsthaft erwägen, dies als eine option, da der rest viel leichter.
Wenn Sie möchten, können Sie immer darauf zurückgreifen, um eine verlustfreie video-format, wie HuffYUV. Das wird zumindest geben Sie einige Kompression, während des Schneidens die Größe der video-Daten in der Hälfte (oder mehr).
Wie gesagt, durch die Verwendung eines kodierten video-format, verlieren Sie die Transparenz. Wenn Sie möchten, um die Transparenz, und Sie immer noch kümmern sich nicht um die Dateigröße, warum nicht halten die PNGs und zeigt Sie als eine sehr schnelle Diashow in Ihrer Anwendung? Wenn Ihre einzige problem mit diesem ist, dass die Anforderungen an den Arbeitsspeicher laden alle PNG-Bilder gleichzeitig in den Speicher... Tu das nicht. Lesen Sie ein paar Bilder weiter (ein fester Betrag oder, soweit Speicher es erlaubt), und wenn Sie angezeigt haben, einen Rahmen, entfernen Sie es aus dem Speicher Lesen und einen neuen Rahmen vor. So erhalten Sie perfekte Qualität und konstantem Speicherbedarf. Das einzige Problem ist, dass Ihre Festplatte und Prozessor müssen in der Lage sein zu halten mit der rate von der Lektüre 30 PNG-Bilder pro Sekunde (oder was auch immer die frame-rate ist).
Darüber hinaus, wenn 5000 separaten Bild-Dateien zu sperrig zu handhaben, können Sie wickeln Sie alle in einige benutzerdefinierte Datei-format. Eine ZIP-Datei, die Federn in den Sinn als ein einfaches portables format, oder Sie können Rollen Sie Ihre eigenen.
Kann man machen was man will mit mencoder:
Hier ist ein link aus dieser Dokumentation:
Encodierung von mehreren input-Bilddateien (JPEG, PNG, TGA, etc.)
Transparenz: ich glaube nicht, dass es einen video-codec, unterstützt transparenct, so hast du Pech hier...
Oder - wenn Sie auf Windows - benutzen Sie einfach Movie Maker.
Es erfordert ziemlich lote von RAM und Rechenleistung, aber intuitiver ist dann VirtualDub und Sie können fügen Sie einige einfache Effekte und Titel.