Ich habe eine Reihe von Videobildern als Bilder in einem Verzeichnis gespeichert und versuche, diese in ein Video von guter Qualität zu kodieren. Jede Einstellung und jedes Format, das ich versuche, erzeugt jedoch sehr auffällige Artefakte.
Der grundlegende Befehl lautet:
ffmpeg -r 25 -i %4d.png myvideo.mpg
und ich habe die Minrate- und Maxrate-Flags ausprobiert. Jedes der Formate {mpg, avi, mov, flv} ist ausreichend.
Anregungen für Einstellungen? Die endgültige Dateigröße ist kein Problem.
video
ffmpeg
video-encoding
CakeMaster
quelle
quelle
ffmpeg -r 20 -f image2 -i myImage%04d.png -f mp4 -q:v 0 -vcodec mpeg4 -r 20 myVideo.mp4
. Ich stellte fest, dass ich die Framerate sowohl für die Eingabe- als auch für die Ausgabedatei angeben musste, um sie zu erzwingen. Dieser Codec scheint für mich zu funktionieren - Sie müssen ihn möglicherweise nicht angeben. Ich wollte nur einschließen, was ich getan habe, weil ich viel Zeit damit verbracht habe, daran zu arbeiten. Der einzige Nachteil ist, dass meine Eingabebilder kontrastreich sind (blaue und rote Kugeln vor weißem Hintergrund) und später im Film alle Kugeln die gleiche dunkle Farbe annehmen - ein unerwünschter Kontrasteffekt.Antworten:
Einige Sachen:
Sie müssen die Videobitrate einstellen. Ich habe noch nie Minrate und Maxrate verwendet, daher weiß ich nicht, wie genau sie funktionieren, aber durch Einstellen der Bitrate mit dem
-b
Schalter kann ich qualitativ hochwertige Videos erhalten. Sie müssen eine Bitrate entwickeln, die einen guten Kompromiss zwischen Komprimierung und Videoqualität bietet. Möglicherweise müssen Sie damit experimentieren, da alles von der Bildgröße, der Bildrate und der Bewegungsmenge im Inhalt Ihres Videos abhängt. Denken Sie daran, dass DVDs im Durchschnitt bei 720 x 480 etwa 4 bis 5 Mbit / s betragen. Daher beginne ich normalerweise dort und entscheide, ob ich mehr oder weniger benötige, und experimentiere dann einfach. Sie können beispielsweise-b 5000k
der Befehlszeile hinzufügen , um mehr oder weniger DVD-Videobitrate zu erhalten.Sie müssen einen Video-Codec angeben. Wenn Sie dies nicht tun, verwendet ffmpeg standardmäßig MPEG-1, das ziemlich alt ist und nicht annähernd so viel Komprimierung bietet wie MPEG-4 oder H.264. Wenn Ihre ffmpeg-Version mit libx264-Unterstützung erstellt wurde, können Sie dies
-vcodec libx264
als Teil der Befehlszeile angeben . Ansonsten macht-vcodec mpeg4
es auch einen besseren Job als MPEG-1, aber nicht so gut wie x264.Es gibt viele andere erweiterte Optionen, mit denen Sie die beste Qualität bei niedrigsten Bitraten erzielen können. Schauen Sie sich hier einige Beispiele an.
quelle
ffmpeg -i … -c:a copy -c:v libx264 -crf 18 -preset veryslow …
. 18 ist das CRF mit sehr geringem Qualitätsverlust, aber die Bitrate wird wahrscheinlich niedrig sein. Sie können auch größere CRF-Werte ausprobieren, wenn Sie eine kleinere Dateigröße benötigen. Und wie Sie sehen, ist das ziemlich einfach.Sie müssen die Option -vb angeben, um die Videobitrate zu erhöhen. Andernfalls erhalten Sie die Standardeinstellung, die kleinere Videos mit mehr Artefakten erzeugt.
Versuchen Sie so etwas:
ffmpeg -r 25 -i %4d.png -vb 20M myvideo.mpg
quelle
Stellen Sie sicher, dass die PNGs vollständig undurchsichtig sind, bevor Sie das Video erstellen
Geben Sie ihnen beispielsweise mit imagemagick einen schwarzen Hintergrund:
Nach meinen Tests reicht keine Bitrate oder kein Codec aus, um das Video gut aussehen zu lassen, wenn Sie ffmpeg-PNGs mit Transparenz füttern
quelle
Wenn Sie keine Nachbearbeitung durchführen, ist das Video niemals besser als die Originalbilder. Auch genau wie bei einem Daumenkino wird es lustig aussehen, wenn Sie einen großen "Sprung" zwischen Keyframes haben. Im Allgemeinen benötigen Sie genügend "Tweens" zwischen den Keyframes, um eine reibungslose Animation zu erzielen. HTH
quelle