S Frame: S(GMC)-VOP MPEG-4 的正式名称叫做 VOP,不用 Frame。
VOP 是一个物件单位,MPEG-4 可以将画面上的每个物体(物件)切割出来,个别压缩,
由许多个 VOP 组成一个画面。
切割的形状可以不是矩形,而是任意形状。
这个功能目前 DivX 5, XviD 都没有做,VOP 就是一整个画面,所以 VOP 等于 Frame。
S-VOP 代表 Sprite VOP,MPEG-4 可以将静态的背景画面单独切割出来,同一个场景,
好几个画面会用同一个背景,只是位置稍有移动(例如画面慢慢向右移),将背景切割出来,
把好几个画面的背景连接起来,做一次压缩,而不要每个画面都压缩一次,可以省 bitrate。
S(GMC)-VOP 当动态旗标和 GMC 旗标都 == 1 时,这个 VOP 叫做 S(GMC)-VOP,
也就是利用 GMC 做压缩的 VOP。由于它和静态的 Sprite VOP 不同,所以我们特别在 S 后面
加上 (GMC) 来标示,这是一个有用到动态 GMC 的 VOP。
什么是 GMC?以前有说过,S(GMC)-VOP 就等于 P-VOP,参考前一个画面压缩,
只是它可以参考的对象有两个,一个是原本的前一个画面,另一个是经过 warp 后的画面。
以上是正式名称,软件中直接简称为 S-Frame。
N Frame: Null Frame,空的 Frame,Frame 里面什么资料都没有,无法显示这个 Frame 的内容。
压缩的时候,有一定的 bitrate,如果前面的画面太难压缩,用掉太多 bit,到了这个画面时
bit 用光了,无法分配 bit 给这个画面使用,这时这个 Frame 无法压缩,只好 drop 掉,
产生一个空的(Null) Frame。
播放时放到这个 Frame,软件会知道这里有一个 Frame 喔,但是压缩时没有数据给他,
所以没有内容可以显示,但是还是要请你等一等,等下一个播放时间点才能显示下一张画面,
不能直接跳掉喔,否则会影音不同步。
N Frame 太多代表 bitrate 不够用,有太多 Frame 没有 bit 可以压缩,只好 drop 掉,
软件会告诉你 Drop Frame 过多,这个文件压得不太好。
不过有例外的情况。
有时候为了特殊目的,我们会故意插入 Null Frame。
例如日本动画有一些是 24fps/30fps 混合,因为 AVI 只能有一种显示速率,如果做成 24fps,
30fps 的部分必须砍掉画面,砍成 24fps,画面会一顿一顿的不顺畅。
如果做成 30fps,24fps 的部分必须要重复画面来生成 30fps,画面也还是会顿。
做成 24fps 和 30fps 都不好,那怎么办?
这时只好取两者的最小公倍数 120fps,做成 120fps
24fps * 5 = 120fps
30fps * 4 = 120fps
原本
1 2 3 4 5 6 7 8 9
24fps 30fps
插入 Null Frame
1 x x x x 2 x x x x 3 x x x x 4 x x x x 5 x x x 6 x x x 7 x x x 8 x x x 9 x x x
变成 120fps,这样就可以保留所有的画面,又能很顺畅的播放。
这种档案用软件检查会告诉你有很多 Drop Frame,但是并不是做坏了,那些 Null Frame
是故意插进去的。你用 VirtualDub 检查,会发现 Drop Frame 出现得很有规律
(VirtualDub 会显示 [D] 代表 Drop Frame),每一张后面会有固定四或三个 Drop Frame。
看到 120fps 的文件便可以知道,其 Drop Frame 是故意插进去的。