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.