ffmpeg -i "a.mov" -i "b.mp4" -filter_complex "[0:v]setsar=sar=${SAR}[a]; [1:v]setsar=sar=${SAR}[b]; [a][0:a] [b][1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" -preset veryfast -crf 18 "merged.mp4"
Mit dem obigen Code kann ich a.mov (1920x816) erfolgreich mit b.mov (1920x816) zusammenführen. Youtube end screens
erfordert jedoch ein Video . 16:9 aspect ratio.
Daher habe ich versucht, den Skalierungsfilter zu filtern und SAR auf zu setzen 16:9
. Dies führt jedoch dazu, dass das Ausgabevideo gestreckt wird, um es an die 16:9 ratio
.
Wie kann ich ein Video mit 16:9
Verhältnis zum eigentlichen Video mit Auflösung ausgeben 1920x816
? Im Wesentlichen sollte der verbleibende vertikale Raum nur schwarz sein, ohne das Höhenvideo zu dehnen, um es an die 816
Höhe 1080
anzupassen.
Hast du schon versucht, es auf Youtube hochzuladen? Ihr Player-Fenster hat ein festes Seitenverhältnis von 16:9 (auf YT.com), aber sie sollten Quellvideos in jedem Seitenverhältnis akzeptieren und sie während der Wiedergabe einfach in ihrem Fenster zentrieren.
Wie auch immer, hier ist die Methode:
ffmpeg -i "a.mov" -i "b.mp4" -filter_complex "[0:v]scale=iw*sar:ih,pad=if(gt(dar,16/9),iw,2*trunc(ih*16/9/2)):if(gt(dar,16/9),2*trunc(iw*9/16/2),ih):(ow-iw)/2:(oh-ih)/2,setsar=1[a]; [1:v]scale=iw*sar:ih,pad=if(gt(dar,16/9),iw,2*trunc(ih*16/9/2)):if(gt(dar,16/9),2*trunc(iw*9/16/2),ih):(ow-iw)/2:(oh-ih)/2,setsar=1[b]; [a][0:a] [b][1:a] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" -preset veryfast -crf 18 "merged.mp4
HB.
"-filter_complex", "[0:v]pad=iw:if(lte(ih\\,iw)\\,ih\\,2*trunc(iw*13/6/2)):(ow-iw)/2:(oh-ih)/2[v0];[1:v][v0]scale2ref[v1][v0];[v0][v1]overlay=x=(W-w)/2:y=(H-h)/2[v]"
?Gyan
HB.
[0:v]pad=iw:if(lte(ih\\,iw)\\,ih\\,2trunc(iw*16/9/2)):(ow-iw)/2:(oh-ih)/2[v0];[1:v][v0]scale2ref[v1][v0];[v0][v1]overlay=x=(W-w)/2:y=(H-h)/2[v]
habe[0:v]pad=iw:if(lte(ih\\,iw)\\,ih\\,2*trunc(iw*13/6/2)):(ow-iw)/2:(oh-ih)/2[v0];[1:v][v0]scale2ref[v1][v0];[v0][v1]overlay=x=(W-w)/2:y=(H-h)/2[v]
.HB.
iw*13/6/2
anstatt aufiw*16/9/2
?HB.