Ich habe keinerlei Kenntnisse über die Videokodierung, habe eine Anwendung in OpenGL geschrieben und speichere die erzeugten Frames in png
Bildern. Die Frames meiner App haben eine Geschwindigkeit von 7 FPS und ich versuche, daraus ein Video zu erstellen.
Zu diesem Zweck benutze ich ffmpeg wie folgt
ffmpeg -framerate 30 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
Was wurde von dieser Seite genommen , aber ich habe mich gefragt, ob es möglich ist, ein Video zu haben, das die Animation mit 30 FPS zeigt?
-framerate
Parameter einfach an, um die gewünschten Ergebnisse zu erzielen .Antworten:
Ich benutze den folgenden Code, um das Gleiche zu tun.
Kommando aufschlüsseln:
Dadurch wird der Eingang mit 30 fps (
-framerate 30
Option) gelesen und mit demlibx264
Codec mit dem konstanten Ratenfaktor 23 (-crf 23
Option) codiert .quelle
Es sind zwei Bildraten zu berücksichtigen: die Eingabe und die Ausgabe.
Standardmäßig ist die Eingangsbildrate 25, und die Ausgabe verwendet dieselbe Bildrate wie die Eingabe, sofern Sie nichts anderes angeben.
Gleiche Bildrate für Ein- und Ausgabe
Wenn Sie ein- und ausgeben möchten, um die gleiche Bildrate zu erhalten, geben Sie einfach die Eingangsbildrate an. In diesem Beispiel wird eine Bildrate von 30000/1001 (NTSC-Video) festgelegt:
Alternativ können Sie in diesem Beispiel
ntsc
anstelle von verwenden30000/1001
, aber nicht verwenden,29.97
da dies nicht genau oder korrekt ist. Siehe andere Frameraten-Aliase .Da die Standardeingabebildrate 25 ist und Sie nur eine Ausgabebildrate festlegen, werden Bilder gelöscht oder dupliziert, um dies zu kompensieren. Deshalb wird in dieser Situation die Eingangsbildrate eingestellt.
Unterschiedliche Framerate für Ein- und Ausgabe
Manchmal möchten Sie möglicherweise, dass sich die Eingangs- und Ausgangsbildrate unterscheiden. Beispielsweise möchten Sie die Frames möglicherweise mit einer bestimmten Rate eingeben und dann Frames duplizieren oder löschen, damit die Ausgabe eine andere Framerate aufweist. Möglicherweise möchten Sie dies aufgrund von Kompatibilitätsproblemen mit Ihrem Ausgabeformat-Container, Ihrem Player und / oder Ihrem Gerät tun:
In diesem Beispiel werden Frames von 10 auf 25 dupliziert. Die Konsolenausgabe teilt Ihnen mit, ob Frames gelöscht oder dupliziert werden.
Der Bilddatei-Demuxer verwendet
-framerate
, während die Ausgabe- Framerate mit festgelegt wird-r
.Unter bestimmten Umständen müssen Sie diese
-pix_fmt yuv420p
Option hinzufügen, wenn Sie H.264-Video ausgeben (dieffmpeg
Konsolenausgabe warnt Sie, wenn dies erforderlich ist). Dies wird ein Chroma-Subsampling-Schema verwenden, das mit allen Playern kompatibel ist.quelle
Option framerate not found.
:-(-framerate
gibt es aber trotzdem nicht mehr. Ich werde meinen Kommentar löschen, da er wirklich nichts mit der Konvertierung einer Bildserie in ein Video mit einer bestimmten Bildrate zu tun hat.-framerate
existiert. Es wird von Image- und Rawvideo-Demuxern sowie einigen Eingabegeräten wie x11grab und v4l2 verwendet.-framerate
dokumentiert? Ich habe dieman ffmpeg
Seite gelesen , konnte sie aber nicht finden. Irgendein Zeiger vielleicht?FFMPEG-DEVICES(1)
.wird in der neuesten version von ffmpeg ausreichen.
quelle