|
A. video(视频)部分:
1 C% n! J1 `/ g1 }本部分设定输出的视频码流的类型和参数,大部分参数在模版中已经固定。" x' n' d/ v- b- m9 I
1)基本类型:有mpeg1/mpeg2,mpeg1用于vcd, mpeg2用于svcd/dvd.
/ ?4 R: `: ]1 y4 ~; s9 M! E$ o/ T2)大小:PAL vcd标准为352x288, pal svcd标准为480x576, pal dvd标准为720x576
% x# j$ X, L8 R+ T4 t' F7 f+ e f3)画面宽高比:一般应该用4:3 625 line PAL, 这是电视机的屏幕比例
, ~0 L8 e; }$ J5 V9 M4 U" f6 L4)桢率:pal 的标准为25fps$ |5 q) J. D3 h
5) 码率控制:码率控制算法是造成各种编码器编码效率和质量不同的关键因素。; f' \( r# {+ ^6 A
mpeg标准中并没有对次算法
1 E; z& b: q5 g! c的具体实现做规定,这通常也是商业版本的知识产权内容。
T X6 Y, r' m4 L, J2 dCBR, 固定码率:保持码率基本维持在平均码率。实现简单,对复杂场景会因码率不足造成马赛克现象,8 v/ e7 W) U( F! ^
对于
9 H0 h; v! w7 F5 r5 P+ k: T) y简单场景则不能充分利用编码空间。(这里讲的复杂场景是指细节/边缘丰富以及快速变化场景)。* h/ }' X% x% I0 Y: B8 ?% D$ l
VBR, (2-pass VBR), “二次处理VBR”。,
% ?# o* M1 g* U( Y1 ~认为其意思是通过对整个视频源进行2次处理使编码效率最高:% _4 e4 M; }/ {' C
第一遍判断何处为复杂场景和简单场景,第二遍根据码率的上下限,把码率重新分配更多给复杂场景。
" W1 G0 X7 @9 Q. d8 `$ T# y T可以在实验中看出, tmpgenc在进行这种编码时进度指示在50%以前是没有预览图象的,; w! h0 X o5 \
而且桢进度指示为0。所以建议威龙改译为“二次处理”。2 S9 ~$ n, a: j8 ~. y
这种码流控制方式应该在给定码率下得到最好的质量,但是和具体2 次分配算法关系很大。4 v4 G- `6 ~: D; x V' {8 ]
同时耗时最长。一些其他编码器甚至有3次处理的码率优化。
1 S+ R& s, G4 @/ p. a7 Y: xMVBR (手动可变码率),设定最大码率和对不同的帧类型设定不同的信息损失量,实现局部码率优化。
; m5 ~* g; |6 z( H, Q+ @可以通过手工指定复杂场景为I帧对之进行较精细的编码。参见对于GOP参数设定部分。9 ?, V3 F! ` P0 ]. Y9 A
CQ-VBR (自动可变码率),设定主观质量值和码率上下限,以主观质量标准对编码器量化环节进行控制,
) ]# I: \2 ]- D) A在可 选参数中设定主观质量值以后,编码器就在能达到此质量标准的前提下尽量节省码率。* n1 d( e) f/ Q' c W
关键在于编码器对主观质* s1 X' y! L2 x9 N% l2 e+ y/ k: S3 K
量的评价方法。这是CQ和VBR的综合,也可以看作自动的MVBR。
! L+ l* ~ k4 }$ |威龙汉化5版 在可选参数中有一行是“不破坏最小码率的状态而填充数据”,( i0 _, X3 o C* C
理解是,如果码率过低就填充无意义码(好浪费啊,不过可能是为了兼容性的原因),$ b, B, i8 F$ h% A& U2 @
英文版这一句没有翻译,还是日文。+ B- m% Y" z3 P2 E0 S5 ^2 t
CQ (固定品质),就是比MVBR多了一个主观质量值的设定。) q9 q2 I' K) `5 A9 I: }6 o. I
RT-CBR (实时固定码率):连GOP层次的码率优化也不做了的CBR,快一点,质量不高4 L7 o, X6 ]- U, g, o) |: _
RT-CQ (实时固定品质):连GOP层次的码率优化也不做了的CQ,快一点,质量不高
: N4 x* U+ i+ M# ]$ G; Z. u( J6)码率:这个码率是指CBR方式下的平均码率
/ s( o* N0 E: R) E2 ^! b; _( `7)VBV缓冲区大小:缓冲区大的话,编码优化会好一些,但是解码的时候也要求大一些的缓冲区。9 v6 x; T, e. @! O( r h) h
因此,vcd/svcd标准中参数是固定的,否则可能机器无法播放。
1 U! P3 A$ N& ^( r1 S7 F8)Pofile & level(类别与级别): 这个参数是mpeg1没有的。$ E7 v/ b/ |7 l9 n! x+ o
在svcd/dvd应用中应该是MP&ML,模版自动选定。
0 m& G) O: _# R" z. D# _MP&HL是为HDTV定义的,分辨率可以高达 1920x1100 ./ d2 C* S, Y5 D/ u8 N
9)制式:好象这个也是mpeg2相关的参数。我们应该用PAL.
+ T. M N/ N0 H/ F _: w+ {5 H6 G10) 隔行扫描:mpeg1只支持逐行扫描(25 frame/sec),mpeg2可以选择隔行(50 field/sec)。0 k0 e% J. Z3 K2 O/ R2 A$ N0 X
如果成品在电视上播放,建议选择隔行,使运动平滑。但是隔行的视频在pc上看会有毛刺现象,6 e2 g; U" _8 G' F# a
在水平运动景象中尤其明显。5 ], ^4 F/ h7 W8 i: L$ i6 ^
11)播放时实现3:2下拉: 这是在film/NTSC制式转换中需要的,即在编码时维持帧率不变,4 r! a0 t/ P6 f5 R+ ^, U
不做3:2下拉,而在播放中实现。参见B.advanced部分。感谢威龙指正。; S" ^/ z! ^/ |' m0 A
12)YUV格式:给亮度/红色差/蓝色差分配的码位。对于人眼来说,亮度信号" ~+ G! k" X: C) l
是最敏感的,所以就分配比较多的编码空间以求精细,对于色差则粗糙些。一般就是4:2:0了。6 Z* x$ ~: c7 [/ w! J- g( \1 x2 G2 ^
(其实4:2:0方案给蓝色差的码位不是0,不知道为什么这样写)
: B# m4 `' T2 \. ~8 C13)DC分量精度:在mpeg编码中需要对8x8的图象块进行DCT(离散余弦变换),: S- k3 S/ h5 j! v4 p# x4 t
DC分量的意义基本是代表8x8块中的平均值,一般需要为之分配比较大的编码空间,
( G! u% ?3 v7 o否则马赛克的边缘效应就比较明显。(8bit就不小啦,图象压缩中是每个bit的油水都要榨干的)+ p5 H0 [; o c% f
14)运动检测精度:mpeg是对I帧进行帧内编码,对P帧进行预测误差编码。就是对于P帧的图块,- _' {: ^, q% ~# X( A) d' w
在I帧中寻找对应的部分,然后对两个图块的差异部分进行编码,可以大大节省码率。
2 d8 g- B5 M( Q) z/ Z4 d' Y运动检测精度越高,图块搜索匹配的范围越大,编码效率越高,同时编码速度越慢。
8 M$ d+ n2 q) b% V9 ?这部分算法同样没有在mpeg标准中定义,各个厂商实现水平相差会很大。! W. q+ r+ g6 ?: @ J' ~$ B
一般来说,在 tmpgenc中设置为普通即可。
# w! g2 V0 ~+ z3 Z4 ^
+ S1 d/ l k6 m7 G- CB. Advanced (影象源)部分:
" A# c+ H' j4 _5 Z本部分设置视频源相关的参数,以及在编码之前对视频源进行的预处理。
& x0 y8 h) |0 M3 [9 O$ _1)视频源类型:隔行扫描/逐行扫描。这个参数在打开视频源文件的时候会对之自动判断设置。
* W: R) p$ o9 Ctmpgenc12版不能自动识别type1 DV,在12a版本中已经解决。参看的编码测试页。
. H1 a1 j' ]: k- _2)场顺序:这是整个 tmpgenc甚至整个桌面视频领域中最混乱的一部分。
y( B6 e& C2 Htmpgenc12a好象也不能根据视频源自动设置这个参数.
; @8 s7 @( Y9 s$ O; F: W. c% \8 B在这个问题上搞了很久,才算明白了一点。这个参数是至关重要的,设置反了会造成生成
; \/ a- D: x) G: u0 s# I9 a图象的明显闪动,打个比方,一个物体的运动位置次序本来是1-2-3-4-5-6-7。。。,$ L$ s5 f/ ~' `5 a9 b9 L
设置反了以后就成了2-1-4-3-6-5-8。。。对于模拟视频源,其场序是由捕捉卡类型决定的,3 a# t4 I Y3 D# P
对于dv,则定义为field order A。讲到这里还没有什么麻烦,但麻烦的是虽然场序只有2种,+ x( x) w2 e9 f# N( B
对于他们的叫法却有3种:
2 q5 ?, s* m4 j1 w1 [field order A/B (在ulead软件中的叫法), K7 s$ z! E. K+ W3 J
even/odd line first ( tmpgenc的叫法),
5 I5 I6 o! G5 s& N7 `6 V8 rfield top/bottom first(bitrate viewer叫法),这3种叫法之间的对应关系是最让人头疼的。
$ E" ?7 Y" l5 A( u6 l; S- C在英文版的 tmpgenc12a中,缺省的设置为“even line first (field A)”,,
# f; M' l" f3 y+ }% x/ _但在威龙汉化中缺省设置为“奇数场->偶数场”,曾就此请教威龙,威龙讲这是日文版的原意,$ r" z# B" n+ S! Q
注意不要在字面上混淆了.
/ h; h! y0 Q4 Z! ^9 N6 L5 M" w$ ^总之,3种叫法的关系是这样的:
: u$ j% r* P/ Tfield A = even line first(奇数场->偶数场) = field bottom first。 最可靠的方法,是用不同的
1 p2 w$ Y. J* L; O设置对高速运动场景各生成一段隔行扫描的视频,并在电视上观察,应该能够看到差别。
% G; w1 o! c$ I3 i& b/ ^7 q# \' c# \3)视频源的宽高比: tmpgenc可以自动识别设置,一般应该为4:3" R: f* D ]: m" s6 Y
625line PAL.
3 K. z- k# K- k5 _1 R/ j! ~2 x4) 画面显示比例和位置:
& u' s; ~1 ~$ x8 s: k# x一般选用“全画面显示并宽高比不变”,
6 B8 ^# O; o. p0 X9 U所谓“全画面显示并宽高比不变2”选项可能是会造成部分画面不可见,没有尝试过这一种。
8 V8 j4 ^$ L, \2 J在4:3视频源中可能没有差别,但对于16:9宽屏影象在 4:3屏幕上输出而言,
$ x2 o; P6 @, ]; h) e“全画面显示并宽高比不变”是在上下留出空白,
# N- a" F$ f* s$ E. q“全画面显示并宽高比不变2”会截掉左右两端画面。。。没有这样试过,* R4 w3 E/ X* E) Q
仅为猜测,不正确的地方请朋友们指正。
$ F/ q: H, d! m7 e1 `6 e" a3 V1 e5)滤镜选项组:
, l3 y P8 p/ Z+ ~. ~/ V$ m这一组设置可以对视频源进行预处理以提高影象质量。
( W4 H- ~% C1 a$ T v一般来说,都是在非编软件中实现这些功能的。5 B3 C; U* b2 {% M$ e/ C4 |$ [& F) k
另外,对滤镜的使用要适度,因为客观上任何滤镜的使用都是引入了信息损失,4 U: |" k* v' X7 F3 T3 d
这是对低品质视频源提高主观质量的代价。0 G, T) p' \9 @* t5 [
影象源范围:选取部分影象源进行压缩 r4 a( Z2 e; H) G
24fps化:24fps是电影标准,一般不选
4 j) y; O2 `2 i' U }. [消除鬼影:鬼影是影象的重影,视频源不好的时候会出现。在dv中没有遇到过。
& }, ^$ |$ }/ b$ D; A消除噪音:在低光条件下的拍摄中影响中回出现明显的颗粒噪声,利用此滤镜可以消除。* Z7 p% e# C( Z! U
不过副作用是平滑了图象,7 Q7 e! D4 i. J$ |
比如人的面部会象橡皮娃娃一样,光滑但没有质感。6 }" H! y; ~" C! X2 v- N
锐化边缘:可以对横向/纵向边缘分别设置参数,做增强处理7 U0 v% B& E! P- @4 B h+ `) v
简单色彩矫正:调整亮度,对比度,gamma,色度等 h% P- [1 f$ p% {5 N a
高级色彩矫正:可以按照不同的色彩空间RGB/YUV等进行色彩矫正! O2 l2 v3 {) l, Y- g
消除交错信号(de-interlace):把隔行扫描的视频源转换成逐行扫描的视频,, m! \: r$ w* O+ [7 i0 W5 N8 F
如果对输出的视频设置为隔行扫描(如在打算电视上播放的svcd/dvd),则不要选用。
; t t4 e i' y2 ~ C9 Q认为在做vcd(逐行扫描mpeg1)时候也未必需要选用,要看视频源的大小决定。
) e6 A2 n! G7 a: O! S. k比如用dv 576线,在做vcd时候只需要288线,简单舍弃一个场就可以,不需要deinterlace.
" E1 f. o% c+ ~相反,如果视频源是352x288的隔行扫描视频,则需要做de-interlace.
3 k9 B( G9 b! [+ ?裁减画面:由于电视机播放视频的时候对边缘四周的部分做舍弃,
) e+ W# E7 L& O D% ~; k所以可以利用这一点只对可见部分进行编码,这样可以加快编码速度,! [1 H! i6 l3 g2 n! P7 D7 X" T
并且因为节省的码率可以利用在未裁剪区域从而提高画面质量。一般来说对上下左右各裁剪5%是安全的。
' Z6 ]# i. p. c* A: g# k2 c3:2下拉:因film 24fps和 NTSC 30fps帧率不同,在制式转换中所需要做的调整。一般不用。
s! N% L& p% b4 m帧率不变:没什么好讲的% n$ T1 x T% C) J0 [: U
声音处理:可以增大/减小音量,并做声音的淡入/淡出。 f0 w3 \ Q# c g6 [
6 L8 V- w6 ^) q+ G& ~
C. GOP结构
; ]# T2 P; K, iGOP = group of picture. 在mpeg中一个GOP就是一组时间上连续的画面。- L# h% f4 j1 M5 U; F! z
mpeg中的画面分为3种:I,P,B.I是内部编码帧,编码方式基本上就是jpeg的格式。 _4 v" ]# j+ k5 g, `" O
P是前向预测帧,编码方式是使用运动检测误差编码,参看A部分对运动检测的说明;
. I+ y8 C5 L" b' \9 D3 d m: I" @B是双向内插帧,根据前后I/P帧进行插值运算,对插值误差进行编码。1 S" u+ M* s! z& c
建议一般不要修改GOP结构,以取得压缩比例和图象质量之间的最好平衡。
6 C: O) a, @+ I# r# n+ g) z7 @极端的例子是只用I帧,图象质量会有保证,但码流会很大。: r3 c% ?- s# b! Y
1)输出编辑用的码流:这个选项会把GOP最后的B帧取消。因为B帧是双向内插的,6 l, K9 T g2 `9 v, W- b
其编码/解码不仅需要以前的I/P, 也需要以后的I/P帧。
p9 w7 d6 J4 p9 M& j取消最后的B帧,可以去除GOP之间的依赖性,从而便于编辑。' d8 j% F1 E6 z. Z
2)检测场景变化:对于快速变化的场景,强行设置为I帧,以保证画面质量3 L! A$ h0 {" z
3)手工强制设定帧类型:手工设定需要精细编码的画面帧为I帧。& @! H5 p; P# l9 U5 j
结合MVBR码流控制可以全面控制码流分配。* |- l2 o' n# ]" R2 c
/ b5 l. |4 }. r% s) W3 r; i8 ]
D.量化矩阵2 d s7 c$ Y# o2 Z M* k% A
mpeg中的量化是对8x8 YUV 信号图块进行DCT变换之后的系数的量化。
! N2 c$ q/ T& b2 V& x通过对高频分量使用比较大的量化阶从而达: Y+ f& V+ n3 |4 r
到减小高频分量的编码空间,达到压缩的目的。代价就是丧失图像细节,边缘模糊等。$ T( M1 w+ g5 [) ]+ L
1)帧内编码量化矩阵:这是指对I帧使用的帧内编码量化矩阵+ j# m' F: _! v: D! P7 b$ j
2)帧间编码量化矩阵:是指对非I帧的帧间预测误差编码所用的量化矩阵。威龙汉化版中叫外部矩阵。
) P& r, s2 y$ |" _3)矩阵模版的选择:建议对一般的视频选用mpeg标准,可以看到,其帧间编码矩阵统一为16,0 p( f5 F* _* t* w' t
这是因为帧间误差已经抵消了低频分量,高频分量丰富,所以和帧内编码矩阵有所不同。
0 J1 a1 O. J' h K6 S. a$ e对于计算机动画尤其是2维线条为主的动画,
" D* h( |4 H" K, ?8 x+ d+ S2 s0 z建议选用CG模版,,可以看到因为CG本身高频信号丰富,其帧内编码矩阵也统一为32。
9 o' t8 m1 |0 E/ c* G8 N另外,有朋友尝试减小量化矩阵的各个数值,认为这样做的意义不大。
5 p5 G* [8 t2 s5 F: l- X因为量化矩阵并不是量化的唯一因素, 事实上的量化程度要根据码流控制部分的反馈信息而自适应调整。
7 |2 [ ^8 g$ `% A3 d4 [9 A; ~9 W这样,即使量化阶减小,在码率有限的前提下,! a$ I- u9 _: K2 g$ y
量化系数还是会加大的。。# L6 d2 \9 F7 c2 r
4)YUV输出为YCrCb: YCrCb色彩空间分配给Y亮度信号的编码空间更大,如果视频源是YCrCb格式的话,
" S2 q6 A, \8 s% q( U- K这个选项 可以增加画面质量。。不过一般都是采用YUV(CCIR601),
" r* i$ z$ n2 L9 e' A$ H2 d如dv,所以不要选择这个选项,否则白白浪费码率。1 l" C) M4 P/ A" C& ?' a% q1 w
5)浮点离散余弦变换:整点运算的速度比浮点要快很多,但精度不如浮点。
- ]/ B: P! S9 s; v( Q猜测这里的浮点其实只是把DCT变换的系数从8bit增大为16bit的精度,8 Y5 ?, w' G( B; z6 i0 E
并不需要浮点运算器单元参与变换,否则速度是不可忍耐的。- Y& p0 b3 i* r
6)不对静止部分做半像素的运动检测:由于视频源是隔行的,对于精细的静止边缘线条(1个像素宽度)0 r2 O8 A9 w# @" T1 F- J# O2 G1 T
比如静止字幕会出现一个场中出现,另一个场中不出现的闪动。选中这个选项会消除闪动。。) Z4 j) }. v% _7 F# K- |! J" H4 N
不过觉得好像这个和量化矩阵无关。, J2 a$ j/ d" `: d/ f$ n
7)柔化马赛克:没什么好说的。就是在8x8图块的边缘做一些特别处理。
4 j* Z7 t' Y1 @/ p/ k( s能用足够的码率或者码率控制手段解决马赛克最好,: r# P" G( N" z" B. O
因为这里的柔化虽然只对边缘进行低频滤波,毕竟还是会对画面造成影响模糊化。' @9 B4 d% N) G
: C4 P( h5 j. @2 ]3 _4 FE. 音频:* N# \$ d4 J, ?/ M Q
这部分大多不需要改动vcd/svcd模版。也没有大的影响。不多讨论。
* ?" [* L4 X0 w4 S1 Z( E8 j6 ^& V' u
1 ], {# F, H, `% BF. 系统:
# H/ M+ q( U7 B# x' Q- ompeg的系统是指视频+音频。vcd/svcd/dvd模版中已经设定好。(
+ \% \, l% G: d9 V7 X1 h0 l& F2 y' |# Q# X0 L7 Q, O
[ 本帖最后由 goodskycn 于 2011-7-27 19:05 编辑 ] |
|