最近在压制 BBC 出品的纪录片的时候,遇到了 MBAFF 格式的视频。doom9 上查了一下,这种被标注为“1080i”的视频,其实既不是逐行也不是隔行。

大小: 52.72 K 尺寸: 400 x 224 浏览: 7 次点击打开新窗口浏览全图

通常,我们所说的“i”(interlaced,隔行扫描)和“p”(progressive,逐行扫描)都是针对“帧”(frame)来说的。将一帧分为高场(top field)和低场(bottom field),统一编码则为逐行扫描,分开编码即是隔行扫描。

但是,MBAFF(Macro-block Adaptive Field Frame)是按照大块来分场。也就是说,在一帧当中,有的大块是逐行,有的大块是隔行。这样一来,用普通的反交错(deinterlace)的话,碰到隔行块还好说,如果遇到逐行块,结果就是变模糊。

在网上搜了很久,终于在 doom9 上找到某达人的解决方法(姑且暂称为“插值法”):

  1. Interp = nnedi2(field=0)
  2. em = TMM(order=0,field=0)
  3. TDeint(order=0,field=0,type=1,edeint=Interp,emask=em)

以下为源片、TomsMoComp 和“插值法”的对比(依次从上到下)。片源为 Bluray 版《BBC: Wild China》。


00:00:12.251

大小: 227.79 K 尺寸: 400 x 225 浏览: 8 次点击打开新窗口浏览全图

大小: 206.95 K 尺寸: 400 x 225 浏览: 6 次点击打开新窗口浏览全图

大小: 214.56 K 尺寸: 400 x 225 浏览: 2 次点击打开新窗口浏览全图

由于这一帧基本上全部为隔行,TomsMoComp 和“插值法”的效果不相上下。但是 TomsMoComp 的速度比“插值法”快很多。


00:49:53.377

大小: 246.32 K 尺寸: 400 x 225 浏览: 5 次点击打开新窗口浏览全图

大小: 227.14 K 尺寸: 400 x 225 浏览: 11 次点击打开新窗口浏览全图

大小: 232.75 K 尺寸: 400 x 225 浏览: 8 次点击打开新窗口浏览全图

这一帧比较复杂。蟒蛇部分为隔行,其他部分都是逐行。可以看出,TomsMoComp 虽然将蟒蛇部分成功反交错,同时也将树枝部分变得模糊。但是“插值法”很出色,不仅反交错了蟒蛇部分,同时也将树枝部分的细节保留得很好。


通过以上比较,暂时可以得出结论,对于 MBAFF 片源,“插值法”是最佳选择。


参考文章:
1. How to deinterlace MBAFF source?