Ändern Sie das Seitenverhältnis, ohne das Video ffmpeg zu dehnen

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 screenserfordert 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:9Verhä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 816Höhe 1080anzupassen.

Antworten (1)

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

Dieselbe Frage wie der andere Kommentar, was ist, wenn das Seitenverhältnis beispielsweise 13: 6 beträgt. Funktioniert es, wenn ich den Befehl in - ändere "-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]" ?
Angenommen, 13/6 ist die erforderliche Ausgabe DAR, ersetzen Sie 16/9 in meinem Befehl durch 13/6 und 9/16 durch 6/13.
Dies ist der Filter, den ich für ein Video mit einem Seitenverhältnis von 16/9 verwendet [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].
Der erste oben erwähnte Filter funktioniert perfekt für Videos mit einem Seitenverhältnis von 16/9 (ohne DAR zu verwenden). Deshalb habe ich mich gefragt, ob ich den trunc-Wert einfach auf ändern könnte, iw*13/6/2anstatt auf iw*16/9/2?
Ich habe eine neue Frage gestellt, kannst du bitte mal nachsehen? video.stackexchange.com/questions/28036/…