Fügen Sie zwei Bilder vor einem mp4 und eines am Ende mit ffmpeg hinzu

Ich versuche, eine Operation mit FFmpeg mit nur einem Befehl durchzuführen, um die Ausgabe so verlustfrei wie möglich zu halten.

Meine Absicht ist es, zwei Bilder mit jeweils 5 Sekunden vor der mp4-Datei hinzuzufügen, dem ersten eine Einblendung von 1 Sekunde hinzuzufügen und ein drittes Bild nach dem Video während 5 Sekunden hinzuzufügen.

Ist das in einem Durchgang möglich?

Ich habe einige Code-Bits gefunden, nämlich:

ffmpeg -r 25 -loop 1 -t 5 -i "image" -i "video" -f lavfi -t 5 -i aevalsrc=0 \
   -filter_complex "[0:v] [2:a] [1:v] [1:a] concat=n=2:v=1:a=1 [v] [a]" \
   -c:v libx264 -c:a aac -strict -2 -map "[v]" -map "[a]" output.mp4 

Und

ffmpeg -i clip.mp4 -vf "fade=in:0:25" -acodec copy clip-out.mp4

Aber ich kann sie nicht zusammen verwenden und ich weiß nicht, ob all diese Befehle wirklich notwendig sind. Irgendwelche Gedanken?

Ist dies in einem Befehl eine absolute Anforderung? Andernfalls könnten Sie zuerst die Anfangs- und Endvideos erstellen und sie dann mit dem Hauptvideo verketten, ohne das Hauptvideo neu codieren zu müssen. Wenn dies akzeptabel ist, zeigen Sie die vollständige Ausgabe von an, ffmpeg -i video -i image1 -i image2 -i image3um wichtige Informationen zu jeder Eingabe anzuzeigen.
Hallo @llogan. Ich möchte nur vermeiden, das Hauptvideo mehr als einmal zu komprimieren, um das bestmögliche Bild zu erhalten, aber es ist keine absolute Voraussetzung. Das Video und drei Bilder haben eine Auflösung von 1920 x 1080.Video Encoder: Lavf58.18.104 Duration: 00:01:36.48, start: 0.000000, bitrate: 4038 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 3907 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default) Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)

Antworten (1)

Videos aus Bildern erstellen:

ffmpeg -loop 1 -framerate 24 -t 5 -i image0.png -loop 1 -framerate 24 -t 5 -i image1.jpg -loop 1 -framerate 24 -t 5 -i image2.jpg -f lavfi -i anullsrc=cl=stereo:r=44100 -filter_complex "[0]fade=t=in:duration=1,format=yuv420p[v0];[1]format=yuv420p[v1];[2]format=yuv420p[v2]" -map "[v0]" -map 3 -shortest pre1.mp4 -map "[v1]" -map 3 -shortest pre2.mp4 -map "[v2]" -map 3 -shortest post.mp4

Beachten Sie, dass Bildrate, Breite, Höhe, Seitenverhältnis, Pixelformat, H.264-Profil, Zeitbasis, Audiokanallayout, Audioabtastrate, Streamtypen und Anzahl der Streams dieser Videos mit denen des Hauptvideos übereinstimmen.

Machen input.txt:

file 'pre1.mp4'
file 'pre2.mp4'
file 'main.mp4'
file 'post.mp4'

Verketten mit concat demuxer :

ffmpeg -f concat -i input.txt -c copy -movflags +faststart output.mp4