Jeg bruger dette filter til at beskære:

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

som fungerer okay. Problemet er, at jeg nogle gange ikke ved, hvad det input er, som jeg får. Det kan f.eks. Være en 1000x500 eller en 500x1000. Så når det sker, får det bare et lille område i midten af videoen. Det ideelle ville være at ændre størrelsen på input for at matche det mindste af dets dimensioner til min ønskede output og beskære resten. Problemet er, at jeg ikke ved, hvilken dimension der bliver.

Hvordan kunne jeg oprette et filter til at løse dette problem?

Kommentarer

  • Hvad er den ønskede outputstørrelse?
  • 320×240, som i kommandoen, jeg har skrevet

Svar

Brug

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

Skalafilterets udtryk for x og y kontroller indgangssideforholdet og hvis det er større end 4 : 3, indstil værdien til 2. argument, og hvis ikke, til tredje argument. -1 betyder, at det oprindelige billedformat skal bevares f.eks. scale=-1:400 anvendt på et 600x800 lærred vil resultere i 300x400.

Kommentarer

  • Hvis min ønskede output også var en anden, ville denne kommando stadig fungere, bare erstatte 320 og 240?
  • Ja. Opdater også størrelsesforholdet, hvis ' er anderledes.
  • Så har jeg altid brug for standard billedformater, som 16: 9 eller 4: 3? Kan jeg ikke lave tilfældige opløsninger, som 322×239?
  • Sikker. Aspektforholdet her er det ønskede output. Så hvis dit mål er 234×787, så ' s (a,234/787)
  • Forklaret i redigeret svar.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *