Używam tego filtru do przycinania:
-filter_complex "[0:v]crop=w=320:h=240[v0c]
który działa dobrze. Problem w tym, że czasami nie wiem, jakie dane wejściowe otrzymam. Może to być na przykład 1000x500
lub 500x1000
. Kiedy tak się dzieje, pojawia się tylko mały obszar w środku wideo. Idealnie byłoby zmienić rozmiar wejścia, aby dopasować mniejszy z jego wymiarów do mojego pożądanego wyjścia, i przyciąć resztę. Problem polega na tym, że nie wiem, jaki będzie wymiar.
Jak mogę zbudować filtr, aby rozwiązać ten problem?
Komentarze
- Jaki jest pożądany rozmiar wyjściowy?
- 320×240, tak jak w poleceniu, które napisałem
Odpowiedź
Użyj
[0:v]scale="if(gt(a,4/3),-1,320)":"if(gt(a,4/3),240,-1)",setsar=1,crop=320:240[v0c]
Wyrażenia filtru skali dla x i y sprawdzają współczynnik proporcji wejścia, a jeśli jest większy niż 4 : 3, ustaw wartość na drugi argument, a jeśli nie, na trzeci argument. -1
oznacza, że należy zachować oryginalny współczynnik proporcji, np. scale=-1:400
zastosowane do 600x800
kanwy spowoduje 300x400
.
320
i240
?(a,234/787)