正如上面所述,电影转换成视频时,每秒24帧必须转成每秒60场(30帧)。实现这一点的方法是把电影的第一帧显示3场,然后把第二帧显示2场,再把第三帧显示3场,以此类推。这个3-2-3-2-3-2的顺序就被称为3-2混合(有时候也写成3/2或3:2,但是这样看起来像个比例,所以我们更愿意写成3-2)。
MPEG-2里面还有两个标志,可以使制作3-2混合的碟片更容易。这两个标志是“REPEAT_FIRST_FIELD”(重复第一场)和“TOP_FIELD_FIRST”(前场优先)。MPEG数据流里的某一帧可以把REPEAT_FIRST_FIELD设为TURE,这就告诉解码器从这一帧要生成3场而不是2场。解码器于是播放第一场,然后第二场,然后再重复第一场,这样就完成了3-2混合的3场的部分。下一帧一般就会把REPEAT_FIRST_FIELD设为FALSE,这样解码器就会生成2场。由于场是偶数场(后场)和奇数场(前场)交替的,TOP_FIELD_FIRST标志就会告诉解码器先播放一帧中的哪一场。前场指的是奇数扫描线:1,3,5……后场指的是偶数扫描线:2,4,6……如果一个3场帧里第一场是前场,那解码器就会输出前场,后场,前场,下一场必须是后场,所以下一帧的TOP_FIELD_FIRST标志就会设为FALSE。
我们仍然要注意这个3-2序列并不是一定要遵守。DVD解码器是不管这个的。它只是按照碟片上的标志来工作。只要每一秒都有60场,一切就正常进行。
下面是一些合法的标志序列的例子。想象一下,我们有个包含4个电影帧的序列要转换成视频并存储为MPEG-2数据流。我们要把这4帧变成10场(3+2+3+2)。
首先,最常用的方法是使用4幅MPEG画面和所有的标志。
例1
MPGE画面 电影帧 PICTURE_STRUCTURE PROGRESSIVE_FRAME REPEAT_FIRST_FIELD TOP_FIELD_FIRST
1 1 FRAME TRUE TRUE TRUE
2 2 FRAME TRUE FALSE FALSE
3 3 FRAME TRUE TRUE FALSE
4 4 FRAME TRUE FALSE TRUE
但是,把同样的一段电影用10个MPEG帧来编码也是完全可以的。
例2
MPGE画面 电影帧 PICTURE_STRUCTURE PROGRESSIVE_FRAME REPEAT_FIRST_FIELD TOP_FIELD_FIRST
1 1 TOP FIELD FALSE FALSE FALSE
2 1 BOTTOM FIELD FALSE FALSE FALSE
3 1 TOP FIELD FALSE FALSE FALSE
4 2 BOTTOM FIELD FALSE FALSE FALSE
5 2 TOP FIELD FALSE FALSE FALSE
6 3 BOTTOM FIELD FALSE FALSE FALSE
7 3 TOP FIELD FALSE FALSE FALSE
8 3 BOTTOM FIELD FALSE FALSE FALSE
9 4 TOP FIELD FALSE FALSE FALSE
10 4 BOTTOM FIELD FALSE FALSE FALSE
或者也可以像这样,用5个MPEG画面来编码。
例3
MPGE画面 电影帧 PICTURE_STRUCTURE PROGRESSIVE_FRAME REPEAT_FIRST_FIELD TOP_FIELD_FIRST
1 1 FRAME FALSE FALSE TRUE
2 1和2 FRAME FALSE FALSE TRUE
3 2和3 FRAME FALSE FALSE TRUE
4 3 FRAME FALSE FALSE TRUE
5 4 FRAME FALSE FALSE TRUE
这都是在DVD上使用的实际例子。例3是非常常见的,尤其是在小公司发行的DVD上,甚至在大制作的预告片和花絮里面也很多。还有其他几十种变化都是合法的。在各种情况下,虽然碟片上储存的标志和画面数不同,但解码器最后输出的场序列都是完全一样的。第一种方式的压缩系数最大,这也是这种方式最为常见的唯一原因(绝对不是为了让逐行DVD机工作得更好)。
MPEG-2里面还有两个标志,可以使制作3-2混合的碟片更容易。这两个标志是“REPEAT_FIRST_FIELD”(重复第一场)和“TOP_FIELD_FIRST”(前场优先)。MPEG数据流里的某一帧可以把REPEAT_FIRST_FIELD设为TURE,这就告诉解码器从这一帧要生成3场而不是2场。解码器于是播放第一场,然后第二场,然后再重复第一场,这样就完成了3-2混合的3场的部分。下一帧一般就会把REPEAT_FIRST_FIELD设为FALSE,这样解码器就会生成2场。由于场是偶数场(后场)和奇数场(前场)交替的,TOP_FIELD_FIRST标志就会告诉解码器先播放一帧中的哪一场。前场指的是奇数扫描线:1,3,5……后场指的是偶数扫描线:2,4,6……如果一个3场帧里第一场是前场,那解码器就会输出前场,后场,前场,下一场必须是后场,所以下一帧的TOP_FIELD_FIRST标志就会设为FALSE。
我们仍然要注意这个3-2序列并不是一定要遵守。DVD解码器是不管这个的。它只是按照碟片上的标志来工作。只要每一秒都有60场,一切就正常进行。
下面是一些合法的标志序列的例子。想象一下,我们有个包含4个电影帧的序列要转换成视频并存储为MPEG-2数据流。我们要把这4帧变成10场(3+2+3+2)。
首先,最常用的方法是使用4幅MPEG画面和所有的标志。
例1
MPGE画面 电影帧 PICTURE_STRUCTURE PROGRESSIVE_FRAME REPEAT_FIRST_FIELD TOP_FIELD_FIRST
1 1 FRAME TRUE TRUE TRUE
2 2 FRAME TRUE FALSE FALSE
3 3 FRAME TRUE TRUE FALSE
4 4 FRAME TRUE FALSE TRUE
但是,把同样的一段电影用10个MPEG帧来编码也是完全可以的。
例2
MPGE画面 电影帧 PICTURE_STRUCTURE PROGRESSIVE_FRAME REPEAT_FIRST_FIELD TOP_FIELD_FIRST
1 1 TOP FIELD FALSE FALSE FALSE
2 1 BOTTOM FIELD FALSE FALSE FALSE
3 1 TOP FIELD FALSE FALSE FALSE
4 2 BOTTOM FIELD FALSE FALSE FALSE
5 2 TOP FIELD FALSE FALSE FALSE
6 3 BOTTOM FIELD FALSE FALSE FALSE
7 3 TOP FIELD FALSE FALSE FALSE
8 3 BOTTOM FIELD FALSE FALSE FALSE
9 4 TOP FIELD FALSE FALSE FALSE
10 4 BOTTOM FIELD FALSE FALSE FALSE
或者也可以像这样,用5个MPEG画面来编码。
例3
MPGE画面 电影帧 PICTURE_STRUCTURE PROGRESSIVE_FRAME REPEAT_FIRST_FIELD TOP_FIELD_FIRST
1 1 FRAME FALSE FALSE TRUE
2 1和2 FRAME FALSE FALSE TRUE
3 2和3 FRAME FALSE FALSE TRUE
4 3 FRAME FALSE FALSE TRUE
5 4 FRAME FALSE FALSE TRUE
这都是在DVD上使用的实际例子。例3是非常常见的,尤其是在小公司发行的DVD上,甚至在大制作的预告片和花絮里面也很多。还有其他几十种变化都是合法的。在各种情况下,虽然碟片上储存的标志和画面数不同,但解码器最后输出的场序列都是完全一样的。第一种方式的压缩系数最大,这也是这种方式最为常见的唯一原因(绝对不是为了让逐行DVD机工作得更好)。