如何在 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)