Ich verwende diesen Filter, um etwas zu beschneiden:

-filter_complex "[0:v]crop=w=320:h=240[v0c] 

was gut funktioniert. Das Problem ist, dass ich manchmal nicht weiß, was der Input ist, den ich bekommen werde. Dies kann beispielsweise eine 1000x500 oder eine 500x1000 sein. Wenn das passiert, bekommt es nur einen kleinen Bereich in der Mitte des Videos. Ideal wäre es, die Größe der Eingabe so zu ändern, dass sie kleiner ist als die gewünschte Ausgabe, und den Rest zuzuschneiden. Das Problem ist, dass ich nicht weiß, welche Dimension sein wird.

Wie kann ich einen Filter erstellen, um dieses Problem zu lösen?

Kommentare

  • Was ist die gewünschte Ausgabegröße?
  • 320×240, wie in dem Befehl, den ich geschrieben habe

Antwort

Verwenden Sie

[0:v]scale="if(gt(a,4/3),-1,320)":"if(gt(a,4/3),240,-1)",setsar=1,crop=320:240[v0c] 

Die Skalierungsfilterausdrücke für x und y überprüfen das Seitenverhältnis der Eingabe und wenn sie größer als 4 sind : 3, setzen Sie den Wert auf das 2. Argument und wenn nicht auf das dritte Argument. Die -1 bedeutet, dass das ursprüngliche Seitenverhältnis beibehalten werden sollte, z. scale=-1:400, das auf eine 600x800 Zeichenfläche angewendet wird, führt zu 300x400.

Kommentare

  • Wenn meine gewünschte Ausgabe eine andere wäre, würde dieser Befehl weiterhin funktionieren und nur 320 und 240?
  • Ja. Aktualisieren Sie auch den Seitenverhältnisanteil, wenn das ' unterschiedlich ist.
  • Benötige ich also immer Standard-Seitenverhältnisse wie 16: 9 oder 4: 3? Kann ich keine zufälligen Auflösungen wie 322×239 machen?
  • Sicher. Das Seitenverhältnis ist hier das von Ihnen gewünschte Ergebnis. Wenn Ihr Ziel also 234 x 787 ist, ist es ' s (a,234/787)
  • Erklärt in der bearbeiteten Antwort.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.