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

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

如何在 AviSynth 中将视频大小调整为 480 像素高,同时保持宽高比?为简单起见,假设采用双线性调整大小。

我试过了:

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

但这给出了错误

脚本错误:函数“BilinearResize”的参数无效


笔记:我不提供的原因width是我没有知道宽度。脚本正在被媒体服务器, 那现在强制使用艾维合成为了执行调整大小。 我不知道任何人可能选择播放的任何视频的大小 - 但我知道我需要将其调整为 x480。

我认为 AviSynth 可以做类似的事情:

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

但这也失败了:

调整大小:YUY2 目标宽度必须是偶数

我可以继续,尝试找到一种方法添加边框或者庄稼,使宽度mod4、mod8 或 mod16。或者我可以在这里问一下,也许已经有一种方法可以执行保留纵横比的缩放。

答案1

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

相关内容