|
|
A. video(视频)部分:: J' F, p( S) W6 W- x+ P
本部分设定输出的视频码流的类型和参数,大部分参数在模版中已经固定。3 d% m7 o7 k9 m& n) [
1)基本类型:有mpeg1/mpeg2,mpeg1用于vcd, mpeg2用于svcd/dvd.; u# J, ]+ F# X' W' ?9 {) ?4 D9 l
2)大小:PAL vcd标准为352x288, pal svcd标准为480x576, pal dvd标准为720x576
! A; R3 x: q0 d& V- ^6 j/ x6 l3)画面宽高比:一般应该用4:3 625 line PAL, 这是电视机的屏幕比例
/ _) h" U0 w$ M# V7 B/ g4)桢率:pal 的标准为25fps9 O, m T# [2 V! ^# J& X0 o1 K
5) 码率控制:码率控制算法是造成各种编码器编码效率和质量不同的关键因素。2 C, y5 `. m( ~- u5 W
mpeg标准中并没有对次算法5 h* Y1 x. Q9 W) ~: e$ c
的具体实现做规定,这通常也是商业版本的知识产权内容。
: \9 E- M: `+ w, lCBR, 固定码率:保持码率基本维持在平均码率。实现简单,对复杂场景会因码率不足造成马赛克现象,% L9 ^7 z' T- }! h# h4 e" V3 @+ x
对于8 s" e5 k; U( e; O
简单场景则不能充分利用编码空间。(这里讲的复杂场景是指细节/边缘丰富以及快速变化场景)。
* N, S3 l+ q" pVBR, (2-pass VBR), “二次处理VBR”。,
. \' l, V4 }3 m/ _认为其意思是通过对整个视频源进行2次处理使编码效率最高:: @- F% T0 f. ~+ j* k; x
第一遍判断何处为复杂场景和简单场景,第二遍根据码率的上下限,把码率重新分配更多给复杂场景。" [4 K8 l* G2 O* u
可以在实验中看出, tmpgenc在进行这种编码时进度指示在50%以前是没有预览图象的,9 M7 L- \: z+ }' F
而且桢进度指示为0。所以建议威龙改译为“二次处理”。
1 ]- y6 D. ]& Z; {' H这种码流控制方式应该在给定码率下得到最好的质量,但是和具体2 次分配算法关系很大。+ f& d$ h) r* [( V2 P: B o
同时耗时最长。一些其他编码器甚至有3次处理的码率优化。1 L Z2 y" H5 V% `7 G
MVBR (手动可变码率),设定最大码率和对不同的帧类型设定不同的信息损失量,实现局部码率优化。
- ?/ b4 \& y; `) y! H! S可以通过手工指定复杂场景为I帧对之进行较精细的编码。参见对于GOP参数设定部分。
: C# z1 k( J+ p" h" xCQ-VBR (自动可变码率),设定主观质量值和码率上下限,以主观质量标准对编码器量化环节进行控制,
4 v: q% H/ t/ O在可 选参数中设定主观质量值以后,编码器就在能达到此质量标准的前提下尽量节省码率。/ P V* D9 `! `' ^
关键在于编码器对主观质
5 c7 F& P! }6 h4 O# ^量的评价方法。这是CQ和VBR的综合,也可以看作自动的MVBR。
# o& k& f) G8 z/ v, r威龙汉化5版 在可选参数中有一行是“不破坏最小码率的状态而填充数据”,; N$ X- e8 t" F" W# J9 L
理解是,如果码率过低就填充无意义码(好浪费啊,不过可能是为了兼容性的原因),
( }, W4 q0 M0 o7 S0 J7 K英文版这一句没有翻译,还是日文。5 P2 d: t3 g6 F. @
CQ (固定品质),就是比MVBR多了一个主观质量值的设定。( z" t% f1 ^" G- @ T
RT-CBR (实时固定码率):连GOP层次的码率优化也不做了的CBR,快一点,质量不高
+ R$ _6 m# a* ~8 x; o" E3 CRT-CQ (实时固定品质):连GOP层次的码率优化也不做了的CQ,快一点,质量不高
& O& E! y+ {* x4 R6)码率:这个码率是指CBR方式下的平均码率
* X: g. f3 S7 V$ d7)VBV缓冲区大小:缓冲区大的话,编码优化会好一些,但是解码的时候也要求大一些的缓冲区。) _. E7 G" r$ ^6 u! U
因此,vcd/svcd标准中参数是固定的,否则可能机器无法播放。! T) G# d4 C0 Z: v' B4 t) Q% r% G
8)Pofile & level(类别与级别): 这个参数是mpeg1没有的。
5 ~( s$ \" B- d在svcd/dvd应用中应该是MP&ML,模版自动选定。* x9 j/ D$ Q. Y+ y/ ]7 l
MP&HL是为HDTV定义的,分辨率可以高达 1920x1100 .- z' h o5 a( D% B5 S3 z
9)制式:好象这个也是mpeg2相关的参数。我们应该用PAL.' M5 b" t- }4 p' R% o
10) 隔行扫描:mpeg1只支持逐行扫描(25 frame/sec),mpeg2可以选择隔行(50 field/sec)。7 N3 E, E% z: C6 T) \% [- p1 z7 b
如果成品在电视上播放,建议选择隔行,使运动平滑。但是隔行的视频在pc上看会有毛刺现象,* c) c" ?7 Q8 ?6 p! p1 h
在水平运动景象中尤其明显。
" v6 J+ o! ^) h R11)播放时实现3:2下拉: 这是在film/NTSC制式转换中需要的,即在编码时维持帧率不变,2 y; r$ e. f( V
不做3:2下拉,而在播放中实现。参见B.advanced部分。感谢威龙指正。
, T+ @& A9 [- n+ g: N$ q8 }12)YUV格式:给亮度/红色差/蓝色差分配的码位。对于人眼来说,亮度信号- r+ Q2 U" u3 n& z* \5 m0 m: G! W
是最敏感的,所以就分配比较多的编码空间以求精细,对于色差则粗糙些。一般就是4:2:0了。
0 O; Z& \9 O, V8 y: I' [/ v% {' C(其实4:2:0方案给蓝色差的码位不是0,不知道为什么这样写)
& o! Z! H/ @' E8 T8 m+ Q13)DC分量精度:在mpeg编码中需要对8x8的图象块进行DCT(离散余弦变换),
3 }+ q( L" s) K: c4 U# JDC分量的意义基本是代表8x8块中的平均值,一般需要为之分配比较大的编码空间,& J8 Q" `4 N, b. z/ q
否则马赛克的边缘效应就比较明显。(8bit就不小啦,图象压缩中是每个bit的油水都要榨干的)
8 p+ L! G% F6 P) Y8 V14)运动检测精度:mpeg是对I帧进行帧内编码,对P帧进行预测误差编码。就是对于P帧的图块,
" ` A g' ~2 S6 W/ E在I帧中寻找对应的部分,然后对两个图块的差异部分进行编码,可以大大节省码率。6 l6 `1 M5 {" c( t X9 R/ x* a: M( O
运动检测精度越高,图块搜索匹配的范围越大,编码效率越高,同时编码速度越慢。" [$ {$ ]9 B- x) W3 X
这部分算法同样没有在mpeg标准中定义,各个厂商实现水平相差会很大。& Q/ K) o6 c. I5 \" }
一般来说,在 tmpgenc中设置为普通即可。9 }7 @+ c' T: `3 C. d4 q; {# ~
2 g8 D8 [5 b5 c, T1 u" j* y6 |B. Advanced (影象源)部分:5 ^! J5 w4 |8 U) x6 L. }
本部分设置视频源相关的参数,以及在编码之前对视频源进行的预处理。
5 }& H' r( P* ?' v8 @6 b' k1)视频源类型:隔行扫描/逐行扫描。这个参数在打开视频源文件的时候会对之自动判断设置。
* a: s8 O/ Y& e% T; _5 e- H/ Utmpgenc12版不能自动识别type1 DV,在12a版本中已经解决。参看的编码测试页。. E, l$ }& Y+ m% i' ?
2)场顺序:这是整个 tmpgenc甚至整个桌面视频领域中最混乱的一部分。
7 D% ~; A* `' Htmpgenc12a好象也不能根据视频源自动设置这个参数.7 W6 K* ?$ q4 h' I" V
在这个问题上搞了很久,才算明白了一点。这个参数是至关重要的,设置反了会造成生成5 U* ^( G A3 B
图象的明显闪动,打个比方,一个物体的运动位置次序本来是1-2-3-4-5-6-7。。。,
6 u6 E- M, f0 s# L: [0 ?+ o7 P设置反了以后就成了2-1-4-3-6-5-8。。。对于模拟视频源,其场序是由捕捉卡类型决定的,. ~: `4 N2 Y, K9 Y" Y q; i
对于dv,则定义为field order A。讲到这里还没有什么麻烦,但麻烦的是虽然场序只有2种,
h3 T/ p8 ~ C* s0 v& D" |对于他们的叫法却有3种:
5 O/ Y" w5 k4 r7 Bfield order A/B (在ulead软件中的叫法)," Q9 W9 H' L# I/ I
even/odd line first ( tmpgenc的叫法),! ^, ]) \, N6 c, J% a0 |, W# ^: |& r; U
field top/bottom first(bitrate viewer叫法),这3种叫法之间的对应关系是最让人头疼的。& x% M' G; ?( S" D
在英文版的 tmpgenc12a中,缺省的设置为“even line first (field A)”,, b+ F% M) B u- x1 R% {. q( C* I
但在威龙汉化中缺省设置为“奇数场->偶数场”,曾就此请教威龙,威龙讲这是日文版的原意,. ]0 ~( z% O+ U# `' F9 p1 u z
注意不要在字面上混淆了.
: \8 p) y1 I# X" R. |% A( t7 V$ e) l总之,3种叫法的关系是这样的:
% \3 A: J3 Z# q% E% ffield A = even line first(奇数场->偶数场) = field bottom first。 最可靠的方法,是用不同的 }! W5 O. \" A; U- ?* W' o
设置对高速运动场景各生成一段隔行扫描的视频,并在电视上观察,应该能够看到差别。0 o. Q( Y' G v8 x% {
3)视频源的宽高比: tmpgenc可以自动识别设置,一般应该为4:3, w% P% @; X8 }. B# u0 Y: F$ B- b
625line PAL.( a% r5 P0 c) L$ S# m) k! Z
4) 画面显示比例和位置:
: Z' T+ e7 ^: Y5 J- V" u8 W* }1 W7 m一般选用“全画面显示并宽高比不变”,1 T9 \. j8 L5 V8 F, s
所谓“全画面显示并宽高比不变2”选项可能是会造成部分画面不可见,没有尝试过这一种。
% G, o0 C, b1 }3 q- U7 [在4:3视频源中可能没有差别,但对于16:9宽屏影象在 4:3屏幕上输出而言,) B! x: T- ^/ X \
“全画面显示并宽高比不变”是在上下留出空白,
( w. d+ }- N" g“全画面显示并宽高比不变2”会截掉左右两端画面。。。没有这样试过,
/ [ @3 k) T- k8 d仅为猜测,不正确的地方请朋友们指正。/ ?% i% p/ |) [* m" Z3 s8 T4 I
5)滤镜选项组:$ d n. k/ ~9 V- @
这一组设置可以对视频源进行预处理以提高影象质量。4 T n9 ?# a7 X" F1 {' `/ T( m
一般来说,都是在非编软件中实现这些功能的。
& J# N. ^' h# v* A6 U2 @8 R另外,对滤镜的使用要适度,因为客观上任何滤镜的使用都是引入了信息损失,3 @9 @ l& g# Q) r
这是对低品质视频源提高主观质量的代价。! k3 _. \' c5 T& ?9 g6 G W- M$ i
影象源范围:选取部分影象源进行压缩
3 e/ K |% o# T$ o8 v2 q# p24fps化:24fps是电影标准,一般不选5 W9 o. B* b/ r. K7 A: y8 e! r
消除鬼影:鬼影是影象的重影,视频源不好的时候会出现。在dv中没有遇到过。7 y! l4 R5 b* U; _& w
消除噪音:在低光条件下的拍摄中影响中回出现明显的颗粒噪声,利用此滤镜可以消除。
9 j3 N9 F' d+ G2 c) m4 m不过副作用是平滑了图象,. c# G6 j4 j$ K0 O0 b( i0 F' D
比如人的面部会象橡皮娃娃一样,光滑但没有质感。6 k& E, ]' E' e! x+ O) G9 y& _# C
锐化边缘:可以对横向/纵向边缘分别设置参数,做增强处理* S1 \4 C0 a" x& z
简单色彩矫正:调整亮度,对比度,gamma,色度等
$ F$ J' w; b: G+ D- L2 N高级色彩矫正:可以按照不同的色彩空间RGB/YUV等进行色彩矫正) ]9 j! j; w+ K/ M8 h' I
消除交错信号(de-interlace):把隔行扫描的视频源转换成逐行扫描的视频,
/ q4 j0 e/ O) g( n9 a1 B' A如果对输出的视频设置为隔行扫描(如在打算电视上播放的svcd/dvd),则不要选用。
2 `. H( f' {6 H8 `( u认为在做vcd(逐行扫描mpeg1)时候也未必需要选用,要看视频源的大小决定。
" v, D, }) f% x# C$ {& r) y% u; c比如用dv 576线,在做vcd时候只需要288线,简单舍弃一个场就可以,不需要deinterlace.
5 G2 r& ^& J j相反,如果视频源是352x288的隔行扫描视频,则需要做de-interlace.+ H9 ~ ~3 a$ F- F, o3 S
裁减画面:由于电视机播放视频的时候对边缘四周的部分做舍弃,8 r1 s3 x9 p7 a
所以可以利用这一点只对可见部分进行编码,这样可以加快编码速度,% {; g* H; ^) A, b' Z# e4 \% M# e
并且因为节省的码率可以利用在未裁剪区域从而提高画面质量。一般来说对上下左右各裁剪5%是安全的。" ^1 Q0 t& i8 W
3:2下拉:因film 24fps和 NTSC 30fps帧率不同,在制式转换中所需要做的调整。一般不用。
* i6 b+ m' W# [% o8 z" M o6 o帧率不变:没什么好讲的
1 V2 v' `7 s$ n) c声音处理:可以增大/减小音量,并做声音的淡入/淡出。
; F* K/ C4 ~0 D {1 I! j! S
9 o5 \% s$ a5 b6 w. h- |% FC. GOP结构
3 L l6 n* M; a& v/ NGOP = group of picture. 在mpeg中一个GOP就是一组时间上连续的画面。
& H( I- b# s: V5 d' e4 g9 W4 ?3 v# Rmpeg中的画面分为3种:I,P,B.I是内部编码帧,编码方式基本上就是jpeg的格式。5 n: p, t- f. x( P5 s! N1 l
P是前向预测帧,编码方式是使用运动检测误差编码,参看A部分对运动检测的说明;
0 E: B2 U* R9 e7 E8 S2 EB是双向内插帧,根据前后I/P帧进行插值运算,对插值误差进行编码。4 i: ^6 V5 ?1 Q X
建议一般不要修改GOP结构,以取得压缩比例和图象质量之间的最好平衡。5 g" P u3 w; u( l% C
极端的例子是只用I帧,图象质量会有保证,但码流会很大。
; d* E7 P! w3 T9 b; D- w1)输出编辑用的码流:这个选项会把GOP最后的B帧取消。因为B帧是双向内插的,& H, e I ^0 V- [$ v% }' |" T8 ?, L
其编码/解码不仅需要以前的I/P, 也需要以后的I/P帧。, ^# g; S0 D/ }- C
取消最后的B帧,可以去除GOP之间的依赖性,从而便于编辑。% o0 }2 I8 f* u) f* j% N+ v# g9 O
2)检测场景变化:对于快速变化的场景,强行设置为I帧,以保证画面质量& w* c# u$ K* F: ?0 d
3)手工强制设定帧类型:手工设定需要精细编码的画面帧为I帧。
6 B( w5 w# r/ q0 f. R. Q: {结合MVBR码流控制可以全面控制码流分配。
/ G* J* m/ X4 `, e" R5 k# q7 D4 J' l 8 ~7 k4 }) F2 x/ Q: [/ ~% \: h, z+ {- Q, c
D.量化矩阵
9 u- h. U5 ]2 g" J3 {mpeg中的量化是对8x8 YUV 信号图块进行DCT变换之后的系数的量化。. ?8 v, b9 H& Z! j6 R
通过对高频分量使用比较大的量化阶从而达+ p% W2 Q: _$ K; Q
到减小高频分量的编码空间,达到压缩的目的。代价就是丧失图像细节,边缘模糊等。
: T( V3 H+ f( z/ |' n2 m1)帧内编码量化矩阵:这是指对I帧使用的帧内编码量化矩阵
# t- F% \, [+ e, V. `( q: r2)帧间编码量化矩阵:是指对非I帧的帧间预测误差编码所用的量化矩阵。威龙汉化版中叫外部矩阵。5 F" I( f; X/ \' x3 W
3)矩阵模版的选择:建议对一般的视频选用mpeg标准,可以看到,其帧间编码矩阵统一为16,
. [, L" t# _, u( i这是因为帧间误差已经抵消了低频分量,高频分量丰富,所以和帧内编码矩阵有所不同。- \2 h8 _. \( i' N
对于计算机动画尤其是2维线条为主的动画,
. x n5 r! F1 q建议选用CG模版,,可以看到因为CG本身高频信号丰富,其帧内编码矩阵也统一为32。! k- _3 [5 }# r& r+ J X% l
另外,有朋友尝试减小量化矩阵的各个数值,认为这样做的意义不大。
0 a9 r8 K' }9 v9 \: N因为量化矩阵并不是量化的唯一因素, 事实上的量化程度要根据码流控制部分的反馈信息而自适应调整。* C' p. w6 e$ ?1 ?. k
这样,即使量化阶减小,在码率有限的前提下,
# G$ u e6 e$ i0 F, T A# n% u5 Z量化系数还是会加大的。。
5 V2 }; R; S+ o4)YUV输出为YCrCb: YCrCb色彩空间分配给Y亮度信号的编码空间更大,如果视频源是YCrCb格式的话,
* @ i3 T9 A# [6 [, A# E这个选项 可以增加画面质量。。不过一般都是采用YUV(CCIR601),* P' T$ v( B+ v' k
如dv,所以不要选择这个选项,否则白白浪费码率。
1 f( e) k Q5 B- U# t5)浮点离散余弦变换:整点运算的速度比浮点要快很多,但精度不如浮点。
) z8 A3 Q3 V4 M9 Q) o3 A! J猜测这里的浮点其实只是把DCT变换的系数从8bit增大为16bit的精度,
6 y/ h5 X' z$ s. v* |$ d* |并不需要浮点运算器单元参与变换,否则速度是不可忍耐的。
' o, [0 n6 c) M h0 ^& T u6)不对静止部分做半像素的运动检测:由于视频源是隔行的,对于精细的静止边缘线条(1个像素宽度)$ V9 c0 G9 S9 L
比如静止字幕会出现一个场中出现,另一个场中不出现的闪动。选中这个选项会消除闪动。。) [9 R" P6 D7 F, h& G# t' c
不过觉得好像这个和量化矩阵无关。
8 E( G" `1 Y# h1 W ^, y7)柔化马赛克:没什么好说的。就是在8x8图块的边缘做一些特别处理。! l( {* b$ C, p) W( l$ _
能用足够的码率或者码率控制手段解决马赛克最好,
' |' Z' N) F3 C( H9 l因为这里的柔化虽然只对边缘进行低频滤波,毕竟还是会对画面造成影响模糊化。1 l- r* Z6 b5 n! c/ I
# I) {* M' {: r. N1 h9 _& i2 E) i/ v
E. 音频:
: T& J; @0 ~: d' ?2 }这部分大多不需要改动vcd/svcd模版。也没有大的影响。不多讨论。' m% k( _! {7 z4 c9 }+ M
' G/ b) Q. E* ?- Z$ S" V* TF. 系统:
6 v. n v- s% s1 _mpeg的系统是指视频+音频。vcd/svcd/dvd模版中已经设定好。(
6 r N2 F+ x0 U5 R: i, p2 {; n- ^% L/ \
[ 本帖最后由 goodskycn 于 2011-7-27 19:05 编辑 ] |
|