FFMPEG Crossfade-Videos ändern die Videoauflösung

FFMPEG Crossfade-Videos ändern die Videoauflösung

Ich verwende derzeit den Befehl aus dieser Frage, um zwei Videos zu überblenden:

Überblenden zwischen 2 Videos mit ffmpeg

Mein Befehl:

ffmpeg -i firstVideo.mp4 -i secondVideo.mp4 -f lavfi -i color=black -    filter_complex \
"[0:v]format=pix_fmts=yuva420p,fade=t=out:st=4:d=1:alpha=1,setpts=PTS-STARTPTS[va0];\
[1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+4/TB[va1];\
[2:v]scale=640x360,trim=duration=9[over];\
[over][va0]overlay[over1];\
[over1][va1]overlay=format=yuv420[outv]" \
 -vcodec libx264 -map [outv] output.mp4

Diese Überblendanimation funktioniert einwandfrei, außer dass sie das Video auf 480 x 360 statt auf die gewünschten 640 x 360 verkleinert. Die Metadaten zeigen fälschlicherweise an, dass die Abmessungen 640 x 360 betragen, aber ich bin sicher, dass dies nicht der Fall ist.

Ich bin auch sicher, dass beide Eingabevideos genau 640 x 360 sind.

Ich vermute, dass die Verkleinerung auf das Pixelformat zurückzuführen ist yuva420p, bin mir aber nicht sicher, welche anderen Optionen ich habe. Ich habe versucht, das Pixelformat zu ändern, aber bisher hat nichts funktioniert.

Der oben angegebene Befehl wird ohne Fehler ausgeführt.

Antwort1

Verwenden

ffmpeg -i firstVideo.mp4 -i secondVideo.mp4 -f lavfi -i "color=black:s=640x360:d=9" 
-filter_complex \
"[0:v]format=pix_fmts=yuva420p,fade=t=out:st=4:d=1:alpha=1,setpts=PTS-STARTPTS[va0];\
[1:v]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+4/TB[va1];\
[2:v][va0]overlay[over1];\
[over1][va1]overlay=format=yuv420[outv]" \
 -vcodec libx264 -map [outv] output.mp4

Der Farbfilter gibt ein 320 x 240-Video aus, sofern nicht anders angegeben. Der Skalierungsfilter versucht, das Quellseitenverhältnis beizubehalten – in diesem Fall 4:3. Daher wird das Video als 640 x 360 codiert, aber mit einem Anzeigeseitenverhältnis von 4:3 als 480 x 360 angezeigt.

verwandte Informationen