web-dev-qa-db-ja.com

AviSynth:アスペクト比を維持しながらビデオのサイズを480に変更する方法

アスペクト比を維持しながら、AviSynthでビデオのサイズを480ピクセルの高さにするにはどうすればよいですか?簡単にするために、バイリニアのサイズ変更を想定します。

私はもう試した:

source = DirectShowSource("TheClip.avi")
resized = BilinearResize(source, target_height=480)
return resized

しかし、それはエラーを与えます

スクリプトエラー:関数「BilinearResize」の引数が無効です


widthを提供しない理由は、知らないからです幅。スクリプトは メディアサーバー によって使用されています 実行するためにAviSynthの使用を強制しますサイズ変更 。私は誰もが再生することを選択するかもしれないビデオのサイズを知りません-しかし私はそれをx480にサイズ変更する必要があることを知っています。

aviSynthは次のようなことができると思います。

resized=BilinearResize(source, source.width*480/source.height, 480)

しかし、それも失敗します:

サイズ変更:YUY2の宛先幅は均等である必要があります

AddBorders または Crop 、幅 mod4、mod8、またはmod16 にする方法を見つけようとして、続行できます。または、ここで質問することもできますが、アスペクトを維持するスケーリングを実行する方法はすでにあるかもしれません。

3
Ian Boyd

私はavisynthスクリプトに少し錆びていますが、これは480のターゲットの高さに基づいて幅を取得し、指定されたモジュロ値を取得するために機能するはずです... avisynthがないため、テストできませんでしたインストール済み.。

 srceH = source.height
 srceW = source.width
    AR = (float(srceW) / float(srceH))
 targH = 480
 targW = int(float(targH) * AR)
 coMod = 4   # The codec modulo requirement 
 targW = ((targW / coMod) * coMod)
4
Peter.O