代码: 全选
import vapoursynth as vs
import xmath as math
core = vs.get_core()
ret = core.ffms2.Source(source=r'input.m2ts')
lb = math.letterbox(ret, 720, 480, 40, 33)
ret = core.resize.Lanczos(ret, lb['rw'], lb['rh'])
ret = core.std.AddBorders(ret, lb['bl'], lb['br'], lb['bt'], lb['bb'])
ret.set_output()
代码: 全选
def letterbox(c, fw, fh, parnum, parden):
inDAR = c.width / c.height # * inSAR
rw = min(fw, int(fh * parden / parnum * inDAR / 2 + 0.5) * 2)
rh = min(fh, int(fw * parnum / parden / inDAR / 2 + 0.5) * 2)
bl = (fw - rw) / 2
br = bl
bt = (fh - rh) / 2
bb = bt
return {'rw': int(rw), 'rh': int(rh), 'bl': int(bl), 'br': int(br), 'bt': int(bt), 'bb': int(bb)}
但没有输入 Pixel/Sample Aspect Ratio 的值
如果输入 SAR 不是 1:1 就无法算出正确的结果
有没有方法可以取得输入的 SAR?