首页 > 技术宅区 > Anamorphic Video Coding, SAR, DAR, ASS

Anamorphic Video Coding, SAR, DAR, ASS

2009年2月15日

唔,头上那个是标题,不是关键字…
这两天帮组里做一个中古OVA的字幕,手上的源是Anamorphic Coding之后的mp4,外挂字幕后发现字体会被挤压,看下图:

这是个头痛我不短时间的问题了,趁着解决这个问题的机会,把标题上列的那几个东西深入的再学习了一遍。

1. Anamorphic Video

说Anamorphic,我们就要看下视频文件的相关知识了。现有的比较先进的视频容器格式,比如mp4和mkv,都支持一个叫做Aspect Ratio Flag的东西,这个东西相当于Head Information,与常见的其它Head Information一起写入文件的头部。Aspect Ratio Flag掌管着视频回放时告诉播放器的高宽比,通过这个Flag,视频实际保存的高宽比可以与回放时的不一致。对这种不一致的视频,我们统一称为Anamorphic Video。

Anamorphic Video并非上面这类容器的首创,在DVD格式中,Anamorphic Video就经常出现,比如下图就是OVA 星空キセキ在DGIndex中反馈的DVD信息:

注意Aspect Ratio写着16:9(AR=1.778),但Resolution栏中的分辨率确是720×480(AR=1.5)。这是一个典型的Anamorphic Video的DVD影片。

选择Anamorphic Video对于DVD发行行业来说是有其原因的,这个就涉及到电影拍摄时母带的录制问题了。大家都知道,在DVD标准发布的那个年代,宽屏显示器简直是一个天方夜谭,因此标准中对DVD-Video格式AR的制定只考虑了普通高宽比一个选项,而那时候的DVD电影发布,毫无疑问的都是标准Aspect Ratio的。时过境迁,到了2006年前后,宽屏进入家庭,普通AR的DVD电影显然不能满足宽屏显示器使用者的视觉享受,重新洗牌制定新的标准又非一朝一夕之事,所以DVD Forum发布了一个amendment,提出了Anamorphic Video的概念,在保证DVD标准不变的前提上,让宽屏电影能存储在普通高宽比的DVD格式中。可以说,现在大部分DVD影片,都使用了Anamorphic Video的格式。

对于Ripper的我们来说,对于源的变化只能被动接受和适应,所以才出现了支持Anamorphic Video的容器格式。
而对于Ripper来说,Anamorphic的出现和支持Anamorphic容器的出现也产生了另一个关于制作方法的大讨论,简而言之,就是:Anamorphic or Not?

一般DVDRIP制作的前期源准备过程中,最重要的两个议题是Resize和Crop,其实大家都应该明白,这两个步骤是会损失片源的部分信息的,而Resize和Crop的本身也会带来AE错误,所以Resize和Crop并不是100%恢复片源的方法。
Anamorphic Video的出现,在这个问题上给了我们另一个思路:制作是不Resize,保持片源存储的AR,再压制得到生肉最后封装进入容器格式时指定播放Aspect Ratio。显而易见,这个思路与Anamorphic的DVD回放时的思路是一致的,且player使用的renderer的resize效果往往比AVS中内置的Lancozresize等滤镜质量要好,因此这种方法等到了不少人的拥护。但这个思路也并非十全十美,DVD四周常见的卷边、黑边、白边、回纹边是这个思路最大的死穴,如果要把这些去掉,必须Crop,Crop就会破坏视频存储的AR,从而导致最终回放的不正确。
这种思路的另一个威胁来自播放器,很多播放器,准确地说是播放器中内置的splitter不能正确识别容器Head Information的AR Flag,从而导致播放AR错误,Apple的QuickTime曾就长时间不能正确识别mp4容器中的这个Flag。

但无论争论是否继续,对Anamorphic Video Coding,ripper普遍持支持的看法。

2. SAR/DAR

想必大家都知道AR,不知道的也都知道16:9是宽屏,4:3是普屏。但知道AR还有很多个分类的人或许就不多了,SAR全程是Sample Aspect Ratio,也称Pixel Aspect Ratio,它指的是视频中每个像素点的高宽比,显然这和分辨率对应的AR并非一个概念,SAR也是Anamorphic的关键判据。SAR的产生其实与3D与2D的映射模型有关,在这就不多做介绍了。

DAR中的D指的是Display,也就是最终回放时视频的AR值(end ratio)。

不难看出,SAR/DAR/AR之间有如下关系:
DAR=Video AR * SAR(or PAR)

3. 问题的根源

回到最上面那个字体的问题,现在我们知道它的根源来自于VSFilter没有考虑视频源因Anamorphic产生的SAR。从Graphedit中我们知道VSFilter在Splitter之后Directshow输出之前工作,这样回放视频时,最后播放器根据AR Flag做缩放时会将字体也按DAR改变,因此就让原本正确高宽比的字体变肥或者变苗条了。

在不知道DAR的场合,我们可以根据DAR和Storage AR反过来推算下DAR,根据kmplayer返回的结果
null

值得注意的是kmplayer用SAR表示Storage而并非Sample,我们称它为AR,根据上面给出的公式,

DAR=1.74=SAR * AR(1.91), 得SAR=0.91

下面的问题就是如何将这个0.91反作用到字体上,于是我寻找了ASS字幕中的相关参数。

4.  ASS

ASS,也就是style v4+新增了几个style参数,其中有两个称为scalex和scaley的参数,ASS文档中是这么介绍这两个参数的

Field 9.3: ScaleX. Modifies the width of the font. [percent]

Field 9.4: ScaleY. Modifies the height of the font. [percent]

bingo! 这就是我要的东西啊。根据上面的分析,我们将得到的SAR取倒数(reciprocal),也就是ScaleX=100, ScaleY=91, 写入需要外挂的ASS文件,重新回放,字体恢复,大功告成。

akiduki 技术宅区 , , ,

  1. cunhan
    2009年4月3日02:12 | #1

    crop的作用除了剪除黑边以外,也是rip出AE=0或者保持AE低值的必要步骤。

    Anamorphic的做法只指定PAR,但是不适当地crop的话,AE不会为0,这个是DVD回放设备和软件一直存在的问题。

    我觉得,Anamorphic容器的出现,只是作为resize的一个替代解决方案而已。crop仍然不可缺。

    最近确实看到有些组做dvd做成720*480,或者704*480.
    但是没看过实物。应该是前者直接Anamorphic了,后者先crop再Anamorphic。

    [WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.

    [回复]

    admin 回复:

    @cunhan, crop和addboarder在rip中都有为了AE->0的作用

    [回复]

  2. cunhan
    2009年7月17日07:24 | #2

    oyear~这次做manimani,下了1440*1080的肉来压,要用到这篇文的招数~

    [回复]

  1. 本文目前尚无任何 trackbacks 和 pingbacks.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word

Switch to our mobile site