Ich habe mit diesem ffmpeg-Befehl ein MP4 aus Bildern und Audiodateien erstellt:
ffmpeg -y -i tmp/part1/frame0.png -i tmp/part1/audio0.mp3 -i tmp/part1/frame1.png -i tmp/part1/audio1.mp3 -i tmp/part1/pause0.5.mp3 -shortest -filter_complex "[1:0][4:0]concat=n=2:v=0:a=1[a1];[3:0][4:0]concat=n=2:v=0:a=1[a3];[0:0][a1][2:0][a3]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" -vcodec libx264 -qp 0 tmp/part1/out.mp4
Dadurch entsteht ein Video mit 2 Einzelbildern und einer Audiospur. Beim Abspielen des Videos in VLC wird jedoch aus irgendeinem Grund das letzte Einzelbild nicht angezeigt und beim Hochladen auf YouTube wird die Videolänge falsch angezeigt.
Wie kann ich diesen Fehler vermeiden? Gibt es eine einfache Problemumgehung?
Antwort1
Die Bilder werden für eine begrenzte Zeit in einer Schleife wiedergegeben (kürzer als die Audiosegmente).
ffmpeg -y
-loop 1 -t 2 -i tmp/part1/frame0.png
-i tmp/part1/audio0.mp3
-loop 1 -t 2 -i tmp/part1/frame1.png
-i tmp/part1/audio1.mp3
-i tmp/part1/pause0.5.mp3
-shortest
-filter_complex "[1:0][4:0]concat=n=2:v=0:a=1[a1];
[3:0][4:0]concat=n=2:v=0:a=1[a3];
[0:0][a1][2:0][a3]concat=n=2:v=1:a=1[outv][outa]"
-map "[outv]" -map "[outa]" -vcodec libx264 -qp 0 tmp/part1/out.mp4