AviSynth:如何将视频大小调整为480,保持宽高比


2

如何在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 要么 作物 ,使宽度 mod4,mod8或mod16 。或者我可以问这里,也许已经有一种方法来执行保持方面的缩放。


有没有办法将(source.width * 480 / source.height)强制转换为int或其他东西?
— soandos

我很确定问题是它计算的宽度是691x480。这与YUY2冲突,YUY2为每个存储一个颜色值 对 像素;这个视频是一对短片(应该是690x480或691x480)
— Ian Boyd

那么有圆函数吗?
— soandos

Answers:


3

我对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)

你错过了设置方面变量。但之后效果很好,谢谢
— yoshco

谢谢 yoshco ... 是的,我曾经有过 AR 在一个地方和 方面 在另一个...改为 AR 。
— Peter.O
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.