Das letzte Bild wird abgeschnitten, während ein einzelnes Bild + Audiospur in ffmpeg in ein Video umgewandelt wird

374
stefano

Dank der Antworten auf diese Superuser-Frage Kombinieren Sie ein Bild + eine Audiodatei, um ein Video mit FFmpeg zu erstellen. Ich konnte ein Video aus einem einzelnen Bild und einer Audiospur erstellen.

Ich habe PJ Brunets-Code verwendet:

ffmpeg -r 1 -loop 1 -i 00.png -i 00.wav -acodec copy -r 1 -shortest 00.avi 

Es funktioniert gut, aber ich habe festgestellt, dass die Dauer des erzeugten Videos länger ist als die ursprüngliche Audiospur. In meinem Fall beträgt der Ton 36,61 Sekunden und das resultierende Video 38 Sekunden.

Ich denke, das Problem kommt von der niedrigen Framerate, daher habe ich die Framerate von 1 Fps auf 2 FPS bis 25 FPS erhöht und die Ergebnisse verglichen: Mit höheren Frameraten erzielen Sie eine höhere Genauigkeit.

Jetzt ist meine Frage: Gibt es eine Möglichkeit, noch 1 fps zu verwenden, aber das letzte Bild abschneiden, wenn der Ton fertig ist? Auf diese Weise können Sie schnellere Kodierungszeiten erreichen, ohne die ursprüngliche Länge zu verlieren.

1
AFAIK, für AVI nicht möglich. AVIs speichern kein PTS, daher ist die Dauer jedes Frames reziprok von Framerate, sodass Ihre Dauer nach diesem Wert quantisiert wird. Gyan vor 7 Jahren 0
gibt es einen anderen container wie avi, der verlustfreie wav speichern kann? stefano vor 7 Jahren 0
MOV, MKV, MUTTER .. Gyan vor 7 Jahren 0
mov & mkv sind weniger genau als avi (40-41s). nut ist 37s, wird aber von youtube nicht akzeptiert. ich muss viele + 1 h lange tracks und andere single tracks veröffentlichen, die nahtlos aufeinander folgen müssen, wie in einem mix. ich kam zu dem schluss, avi 1fps (mit + 1,5s fehler) für die langen tracks und avi 2fps (+ 1s) für die einzelnen tracks zu verwenden. 10fps (+ 0,2s) oder 25fps (fast genau) wären für einen nahtlosen Übergang besser, aber das Bild wird nach 4fps und mehr blockiert. wenn ich die gleiche arbeit mit sony vegas mache, werden bilder nicht blockig, aber es braucht viel mehr zeit zum kodieren und min. Die Framerate beträgt 12 Bilder pro Sekunde. stefano vor 7 Jahren 0
Wenn Sie mehrere Audio- / Videosegmente genau anhängen müssen, verwenden Sie den Concat-Filter. Es sollte mit 1 fps funktionieren, aber in jedem Fall mit dem Codec libx264 und 24 fps wird es funktionieren. Gyan vor 7 Jahren 0
Ich bin nicht daran interessiert, die Videos zu verketten. Ich möchte sie in der gleichen Länge wie die Original-Audiodateien mit der niedrigsten möglichen Bildrate, da es sich nur um Einzelbildvideos handelt. trotzdem danke für eure hilfe. stefano vor 7 Jahren 0
Sie kodieren derzeit mit mpeg4 mit einer Standard-Bitrate von 200 kb / s. Deshalb wirken sie über 4 fps blockiert. Wenn Sie mit libx264 und einer Bildrate von 25 Bildern pro Sekunde codieren, nimmt dies nicht viel mehr Speicherplatz in Anspruch, da x264 doppelte Frames in jeweils 30-50 Byte speichert und Ihre Dauer genauer ist. Gyan vor 7 Jahren 0
Ich habe Ihre Anweisungen befolgt: Bilder sind nicht mehr blockiert, aber x264 ist langsamer und weniger genau, was mich zwingt, höhere Frameraten zu verwenden, um dieselbe Genauigkeit zu erreichen. daher habe ich das native mpeg4 (schnellste codierung) und libxvid (ein bisschen langsamer) mit verschiedenen bitraten ausprobiert. Mir fiel auf, dass der 1. Frame immer blockig ist (mit xvid etwas glatter), danach funktioniert er einwandfrei. Welche Bitraten empfehlen Sie für Einzelbildvideos mit 10fps-20fps? stefano vor 7 Jahren 0
Mach dir keine Sorgen über die Framerate. Verwenden Sie bei Bedarf 25 Bilder pro Sekunde oder 30 Bilder pro Sekunde. Mit `libx264` fügen Sie` -preset veryfast` hinzu. Verwenden Sie bei mpeg4 / xvid eine Bitrate von 2000 kb / s. Geben Sie nicht an AVI aus, das ein 25 Jahre alter Container ist. Verwenden Sie MOV oder MKV. Gyan vor 7 Jahren 0

0 Antworten auf die Frage