동영상 압축 과정 중 엔트로피 코딩이라는 부분이 있습니다.

입력되는 데이터를 무손실로 압축하는 과정인데 zip, rar 등과 같은 일반적인 파일 압축과 비슷한 과정입니다.

이 엔트로피 코딩은 압축 과정의 마지막 부분이기 때문에 엔트로피 코딩의 출력물이 비트레이트를 결정합니다.

예를 들어 비트레이트가 3000 kbps라고 한다면 엔트로피 코딩을 거쳐서 나오는 데이터의 크기가 초당 3000 kbit 라는 말이죠.


그렇다면 엔트로피 코딩의 출력물인 비트레이트가 높다는 말은 엔트로피 코딩에 입력되는 데이터도 크다는 말이고,

따라서 비트레이트가 높을수록 엔트로피 코딩에 더 많은 시간을 소요하게 되겠죠.

30Mb의 폴더를 zip 파일로 압축하는 것보다 60Mb의 폴더를 zip 파일로 압축하는 것이 더 오래 걸리는 것과 같은 이치입니다.


그렇기 때문에 똑같은 소스를 똑같은 옵션으로 인코딩해도 비트레이트가 높을 때 인코딩 시간이 더 오래 걸립니다.

움직임 예측이나 주파수 변환 같은 과정들은 비트레이트와 크게 상관이 없지만 이 엔트로피 코딩이 비트레이트에 직접 영향을 받기 때문이죠.

아래는 똑같은 소스를 똑같은 x264 옵션으로 비트레이트만 다르게 인코딩한 결과입니다. (3000 kbps, 5000 kbps)

E:\>e:\encoding\work\x264r2230.exe --bitrate 3000 --pass 2 --stats e:\bit.stats --output nul bit.avs

avs [info]: 1280x720p 0:0 @ 30000/1001 fps (cfr)

x264 [info]: using cpu capabilities: MMX2 SSE2Fast FastShuffle SSEMisalign LZCNT

x264 [info]: profile High, level 3.1

x264 [info]: frame I:10    Avg QP:23.99  size: 68606

x264 [info]: frame P:891   Avg QP:27.29  size: 17203

x264 [info]: frame B:779   Avg QP:28.99  size:  6417

x264 [info]: consecutive B-frames: 10.0% 82.6%  5.7%  1.7%

x264 [info]: mb I  I16..4:  3.9% 77.3% 18.9%

x264 [info]: mb P  I16..4:  0.7%  5.4%  0.6%  P16..4: 50.6% 14.2%  8.1%  0.0%  0.0%    skip:20.3%

x264 [info]: mb B  I16..4:  0.0%  0.3%  0.0%  B16..8: 51.9%  3.8%  0.5%  direct: 1.8%  skip:41.6%  L0:40.0% L1:57.5% BI: 2.5%

x264 [info]: 8x8 transform intra:80.4% inter:79.5%

x264 [info]: coded y,uvDC,uvAC intra: 72.4% 63.4% 24.2% inter: 24.9% 21.2% 0.9%

x264 [info]: i16 v,h,dc,p: 46% 18%  7% 29%

x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 17% 13% 20%  6% 10% 10%  9%  8%  8%

x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 19% 14%  6% 10%  9%  8%  6%  5%

x264 [info]: i8c dc,h,v,p: 60% 15% 19%  6%

x264 [info]: Weighted P-Frames: Y:2.9% UV:0.6%

x264 [info]: ref P L0: 62.8% 19.9% 12.6%  4.6%  0.1%

x264 [info]: ref B L0: 84.6% 15.1%  0.2%

x264 [info]: ref B L1: 98.8%  1.2%

x264 [info]: kb/s:2998.79


encoded 1680 frames, 20.98 fps, 2998.79 kb/s


E:\>e:\encoding\work\x264r2230.exe --bitrate 5000 --pass 2 --stats e:\bit.stats --output nul bit.avs

avs [info]: 1280x720p 0:0 @ 30000/1001 fps (cfr)

x264 [info]: using cpu capabilities: MMX2 SSE2Fast FastShuffle SSEMisalign LZCNT

x264 [info]: profile High, level 3.1

x264 [info]: frame I:10    Avg QP:21.63  size: 90206

x264 [info]: frame P:891   Avg QP:24.92  size: 28210

x264 [info]: frame B:779   Avg QP:26.58  size: 11612

x264 [info]: consecutive B-frames: 10.0% 82.6%  5.7%  1.7%

x264 [info]: mb I  I16..4:  2.6% 76.6% 20.7%

x264 [info]: mb P  I16..4:  0.6%  7.8%  0.8%  P16..4: 50.2% 21.8% 10.7%  0.0%  0.0%    skip: 8.1%

x264 [info]: mb B  I16..4:  0.0%  0.8%  0.0%  B16..8: 54.0%  7.7%  1.2%  direct: 4.9%  skip:31.3%  L0:40.9% L1:54.2% BI: 4.8%

x264 [info]: 8x8 transform intra:84.7% inter:71.7%

x264 [info]: coded y,uvDC,uvAC intra: 83.9% 74.9% 35.5% inter: 38.9% 32.7% 2.2%

x264 [info]: i16 v,h,dc,p: 48% 16%  6% 30%

x264 [info]: i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 15% 12% 20%  6% 10% 10%  9%  8%  9%

x264 [info]: i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23% 18% 14%  6% 10%  9%  9%  6%  6%

x264 [info]: i8c dc,h,v,p: 57% 15% 20%  7%

x264 [info]: Weighted P-Frames: Y:2.9% UV:0.6%

x264 [info]: ref P L0: 61.3% 18.9% 14.4%  5.4%  0.1%

x264 [info]: ref B L0: 83.0% 16.8%  0.2%

x264 [info]: ref B L1: 98.7%  1.3%

x264 [info]: kb/s:5006.79


encoded 1680 frames, 18.45 fps, 5006.79 kb/s


아주 큰 차이는 아니지만..비트레이트가 높은 쪽의 인코딩 속도가 더 느리죠.

특히 H.264/AVC 표준에서는 엔트로피 코딩에 사용되는 CABAC이라는 압축 방식이 이전의 표준에 비해서 상당히 복잡하기 때문에

비트레이트에 따른 인코딩 속도의 차이도 비교적 큰 편에 해당합니다.


비트레이트가 너무 낮은 것도 좋지 않지만 필요 이상으로 높은 것도 좋지만은 않죠..

뭐든 적당한 게 좋은 것 같습니다.




'인코딩 일반' 카테고리의 다른 글

VFR 인코딩과 CRF  (38) 2013.01.09
지상파 3D 듀얼스트림 시범방송  (4) 2013.01.09
인코딩 속도와 비트레이트  (18) 2013.01.04
H.264/AVC 디코더 간의 화질 차이?  (1) 2012.12.15
x264 QP 값의 범위  (6) 2012.12.13
H.264/AVC 인코딩과 레벨  (2) 2012.12.13
Posted by 김코덱