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.

Komentarze

  • Ponadto, jeśli pożądane przeze mnie wyjście było innym wyjściem, czy to polecenie nadal działałoby, zastępując tylko 320 i 240?
  • Tak. Zaktualizuj też ułamek współczynnika proporcji, jeśli ' jest inny.
  • Czy zawsze potrzebuję standardowych współczynników proporcji, takich jak 16: 9 lub 4: 3? Nie mogę tworzyć losowych rozdzielczości, takich jak 322×239?
  • Jasne. Współczynnik proporcji jest tutaj jednym z żądanych wydruków. Tak więc, jeśli celem jest 234×787, to ' s (a,234/787)
  • Wyjaśniono w zredagowanej odpowiedzi.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *