このフィルターを使用して切り抜きを行います:

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

問題なく動作します。問題は、私が得ようとしている入力が何であるかわからないことがあるということです。たとえば、1000x500または500x1000の場合があります。したがって、それが発生すると、ビデオの中央の小さな領域が取得されます。理想的なのは、入力のサイズを変更して、小さい方のサイズを目的の出力に一致させ、残りをトリミングすることです。問題は、どの次元になるかわからないことです。

この問題を解決するためのフィルターを作成するにはどうすればよいですか?

コメント

  • 必要な出力サイズはどれくらいですか?
  • 私が書いたコマンドのように320×240

回答

使用

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

xとyのスケールフィルター式は、入力のアスペクト比をチェックし、4より大きい場合はチェックします。 :3、値を2番目の引数に設定し、そうでない場合は3番目の引数に設定します。 -1は、元のアスペクト比を維持する必要があることを意味します。 scale=-1:400600x800キャンバスに適用すると、300x400になります。

コメント

  • また、目的の出力が別の出力である場合、このコマンドは引き続き機能し、320

  • はい。また、'が異なる場合は、アスペクト比の割合を更新します。
  • では、16:9や4:3などの標準のアスペクト比が常に必要ですか? 322×239のようなランダムな解像度を作成することはできませんか?
  • もちろんです。ここでのアスペクト比は、必要な出力の1つです。したがって、ターゲットが234×787の場合、' s (a,234/787)
  • 編集された回答で説明されています。
  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です