반응형
x264 BASIC:
x264 는 H.264 코덱의 한종류입니다.
가끔 MPEG-4 AVC 라고도 하죠.
2003년도에MPEG (ISO) 그리고 VCEG (ITU) 란 그룹에의해 만들어졌습니다.
그래서 이름이두개로 알려진거죠
MPEG-4 Part 10(ISO 14496-10), H.264 (ITU document number).
MPEG 의 AAC 오디어 포맷을 따라,
정식적인 이름은 AVC 라고 지어졌습니다.
H.264 는 open standard codec 입니다.
이 뜻은 누구나 이 코덱을 사용하고 더 발전시킬수 있다는 겁니다.
예를 들자면,
현재 H.264 영상물을 인코딩할수 있는 코덱은: x264, mainconcept, nero,
intel, ati, moonlight, sony, sorenson...etc.
하지만 그 중에서도 x264가 제일 빛나는 이유는,
공짜이면서도 다른 H.264코덱에 비해결과가 너무 좋다는 겁니다.
x264는세가지로 개발되어있습니다.
물론, 소스 코드는 x264 자체를 개발한 사람에 의해서 공급되기때문에
별 다른 차이를 못 느낄수도 있겠죠.
하지만 누가 더 빨리 업데이트를 하고,
또 누가 더 좋은 방향으로 개발을 하기에 따라서 결과도 달라지지 않을까요?
전 virtualdub 으로 x264 인코딩하는걸 추천하고 싶지 않습니다.
왜냐면 x264 의 모든 옵션을 virtualdub 으로는 사용하지 못하기 때문입니다.
그래서 많은 사람들은 x264 를 사용할수 있는 Megui 나 Realanime 등을 쓰고 있죠.
하루가 다르게 발전되고 있는 코덱이 바로 x264 입니다.
아직까지베타 중간에도 들어가지 못한 코덱이 이정도 성능을 보이고 있다면,
그 가능성이 보이지 않습니까?
단점이 있다면,
인코딩 시간이 좀 오래걸린다는 것과,
또 재생시 CPU사용이 크다는 점입니다.
그래서 만약 컴푸터 성능이 낮은데,
동시에 다른 프로그램과 x264 동영상을사용하면,
영상이 버벅거리면서 문제가 생길수 있다는 겁니다.
또 한가지는 최신 디코더가 있어야 된다는 점이죠.
많은 분들이 곰 플레이어를 사용하시는것 같아서 사이트에 가봤습니다.
그동안 H.264 영상을 재생하는데 문제가 많았던것 같더군요. 당연한겁니다.
그만큼 업데이트를 자주 안했다는건데,
x264 영상물을 제대로 보기 위해선 최신 코덱과,
그리고 코덱 충돌이 없어야지만 가능하기 때문입니다.
x264 를 감상하시고, 깨끗한 컴푸터를 원하신다면
가벼운 플레이어에 통합코덱을 추천합니다.
그리고 마지막으로, H.264 를 정식으로 담을수 있는 container 는 MP4 라는 점입니다.
예를 들자면, virtualdub 으로 x264/AC3 영상물을avi container 로 담았다가
mkv 로 바꾸고 싶으면 어떻게 합니까?
그냥 mkvmerge gui 로도 mux 를 못하십니다.
오래된 버젼을 사용하면 가능하겠지만,
그것은 올바른 방법이 아니기 때문에 나중에 문제가 생기죠.
H.264 비디오 스트림을 avi 에서 빼낸 다음에 MP4 로 옮겨서
mux 를 하셔야만 제대로 된 Heading 을 간직하실수 있습니다.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
인코딩 속도(speed)와 질(quality)에 영향에 주는 옵션들:
Subq : Motion Estimation/Partition Decision 에 나오는 옵션을 말합니다.
1-6 옵션이 있으며, 기본값은 5 입니다.
Subq 는 frame reference 와 함께,
속도와 질에 많은 영향을 주는 옵션이기도 합니다.
그리고 x264 를 분석하거나 비교할때는 항상 PSNR
[인코딩을 끝내고 나면 x264가 계산한 값]을 사용합니다.
Subq=5 일 경우 Subq=1 보다 35% 더 오래걸립니다.
그리고 Frame reference=6 으로 올리시면 60% 나 속도가 느려지죠.
하지만 Subq 가 주는 PSNR 의 영향은 Frame reference 에 관계없이
어느정도 비슷합니다.
Subq=5가 Subq=1 보다 PSNR 이 0.2-0.5 더 많이 나옵니다.
그 정도면 충분히 눈으로도 보이는 차이점입나다.
Subq=6 은 두번째로 느리고,
Subq=5 보다 PSNR 이 0.1-0.4 더 많이 나옵니다.
속도 차이는 25%-100% 차이가 나죠.
왜냐면 다른 Subq 레벌과 달리 Subq=6 의 움직임은
b-frame 에 의해 조절되기 때문입니다.
[Subq=1-5 은 Frame reference, Me 옵션의 영향을 받습니다]
즉, Subq=6 는 모션이 많고 복잡한장면에는
[인코딩 속도와 질적으로] 큰 영향을 줍니다.
하지만조용하고 움직임이 작은 장면에는 별 영향을끼치지 않습니다.
현제 x264 는 7 까지옵션이 가능합니다.
하지만 6 과 7 의 질 차이는 별로 없어도 속도 차이는
15% 더 오래걸린다는 점이 마이너스입니다.
그래서 업데이트가 좀 더 되기전까진 Subq=6 을 사용하는 것을 추천합니다.
Frameref : 기본값은 1 입니다.
하지만 이것은 절대로 적당한 값이 아닙니다.
Frameref=2 로 올리는것만으로 0.15 PSNR 을 얻기 때문입니다.
물론 인코딩 속도는 5%-10% 더 늘어납니다.
Frameref=3 은 Frameref=1 보다 0.25 PSNR 이 더 많이 나오고
속도는 %15 차이가 납니다.
3-5 가 제일 적당합니다.
더 이상의 Frameref 값을 올릴 필요는 없습니다.
왜냐면 현재로선 3 이상을 넘어도, 화질이 속도에 비해 큰 차이가 없기 때문입니다.
예를 들어서, Frameref=12 은 Frameref=6 보다 0.02 PSNR 을 더 얻지만,
속도는 20% 나 더 늘어납니다.
그래도 가끔 16 까지도 설정합니다.
왜냐면. b frame 의 움직임은 확실히 소스에 따라 달라지기 때문이죠.
그리고 그만큼 압축을 더 많이 합니다.
값을 많이 준다고 해서 PSNR 이 나빠지는것도 아닌 이상,
컴푸터 성능이 괜찮고 또 속도에민감하지 않으신분은
16 까지설정해도괜찮다고 생각합니다.
Me : 인코딩의 속도와 질에 제일 큰 영향을 주는 옵션이기도 합니다.
모션 계산 방법이라고 해야 될까요?
보통Diamond, Hexagonal, Uneven Muti-Hexagonal, Exhaustive (1,2,3,4)
이렇게 나와있죠?
Me=1 과 Me=2 는 속도와 질을 비교할때 별 차이가 없습니다.
하지만 Me=3 의 속도는 frameref 값에 틀려지고
질은 Me=2 보다 PSNR 이 0.1 더 나옵니다.
오래된 버젼의 x264 는 마지막 옵션인
Exhaustive 을 사용하실 필요가없습니다.
너무 느리기 때문에 아예 쓸 필요가 없다는 거죠.
하지만 최신 x264 버젼은 Exhaustive 옵션을 조금 더 빠르게 업데이트를 했습니다.
그래도 속도에 비해 화질에 별 차이가 없기에,
더 많은 업데이트가 되기 전까진 추천하지 않습니다.
4x4mv : 모션 계산 방법에 포함되어있는 옵션중에 하나라고생각하면 될것 같습니다.
8x4, 4x8 그리고 4x4 macroblocks I frame search 라고 나와있죠?
모든 박스를 체크하면 10%-15% 속도가 더 늘어납니다.
하지만 모션이 많은, 특히 작은 물체들이 왔다갔다 하는 복잡한 소스에서는
0.1 PSNR 을 더 얻을수있습니다.
반대로 모션이 작은 소스는 도움이 전혀 되지않는 옵션이기도 합니다.
bframe : x264 에서b frame 의 활용은 다른 코덱에 비해 훨씬 효울적입니다.
Adaptive Quantization : 우선 Xvid 의 AQ 와는차이가 있습니다.
그리고 다른 H.264 코덱의 AQ 와도 좀 다르죠.
개념은 영상의 어두운 곳의 질을낮추고
사람의 눈에 잘보이는 곳의 질은높인다는 겁입니다.
즉, 잘보이는 곳에는bitrate 을 더 많이 준다는 거죠.
그래서 AQ 를 사용하면 파일사이즈가 더 커지게 됩니다.
하지만 소스 자체가 어둡다면 아무래도
AQ 를 사용안하는게 좋을것 같네요.
b Adaptive : 인코더가 알아서 필요한곳에만 b frame 을 사용하고
필요없는 곳에는절제시키는 옵션입니다.
논쟁이 많이 되고 있는 문제가 하나 있는데,
그것은 바로 b adapt 를 사용하지 않을 당시에는
b frame 의 값을 1 로 잡아야 된다는 주장입니다.
1 로 정하는것은 인코더가 알아서 b-frame 을 정하라는 뜻입니다.
1 로 설정을 해야만, 모션이 많은 부분의 질이 떨어지지 않는다고 합니다.
Pyramid : Reference 라고도 하죠?
b frame 을 어떻게 사용하는가를 결정하는 옵션입니다.
Frameref 값을 높게 설정했다면이 옵션을 사용하세요.
b frame 을 기준으로 인코딩을 합니다.
속도와는 상광없이 질이 약간좋아지기 때문에 추천하는 겁니다.
하지만 최신 디코더가 아니면 재생시 문제가 생길수도 있습니다.
Weight : 천천히 장면이 바꿜때, fade 한다고 하죠?
바로 이런 부분을 더효율적으로인코딩하기 위해서 만들어진 옵션입니다.
부드러운 장면 처리를 위한 옵션이지만 아직 100%완성되지 않았습니다.
한장면에서 검정색만 있는 장면으로 넘어갈때에는 확실이도움이 됩니다.
하지만 밝은 장면에서 하얀색(밝은색) 장면으로
천천히 넘어갈때는 별 영향을 끼치지 않습니다.
[b-frame 사용을 절제하는 경향이 있기때문에, 100%완성되지 않았다는 겁니다.
그래도 b-frame을 사용하신다면, 이 옵션을 사용하시길 바랍니다.]
개인의 취향에 따라 설정할수 있는 옵션들:
Deblock alpah/Deblock beta : 아직까지도 많이논쟁되고 있는 옵션입니다.
기본적인 개념은 인코딩 하는 과정에서
block 을 없앤다는겁니다.
기본값은 (0,0) 며, 값이 올라갈수록 smooth하게 되고,
내려갈수록 sharp 하게됩니다.
보통 (2,2) 에서 (-2,-2) 사이에서 값을 조절합니다.
애니메이션 인코딩으론 (1,1) 을 많이 추천해 주는데,
깨끗한 소스일때는 그냥 기본값을 사용합니다.
Qcomp : Bitrate Variability 라고도 하며,
bitrate 의 움직임을 조절하는 옵션입니다.
기본값은 0.6%[60%]입니다.
예를 들어서, QP 를 너무 낮은 값으로 설정하면,
모션이 많은 복잡한 장면의 질이 떨어집니다.
하지만 모션이 없는장면은 그만큼 더 좋아지죠.
보통 0.7%-0.8% 을 사용하며,
모션이 많고 복잡한 소스에는 1.0%까지도 사용합니다.
3 PASS : 2 PASS 인코딩의 장점은 1 PASS 보다 좀 더 확실한 bitrate 분배와어느 한곳의
over quantization,그리고 under quantization 을 막아주기 때문입니다.
제가 미리 위에 말씀드렸지만 x264 의 b frame 사용은
다른 코덱 보다 효율적이기 때문에,
[lossless 로 설정하시고 1 PASS 로 인코딩하기 전까진]
2 PASS가 더 질 좋은 영상물을 만들어 줍니다.
물론 소스가 깨끗하면 2 PASS/1 PASS 전혀 상관이 없죠.
하지만 오래되고 문제가 많은 소스라면 3 PASS 까지 인코딩 할수 있습니다.
아직까지 100%완성되지 않은 옵션이며,
속도에 비해 질의 차이가 그렇게 많이 나지 않습니다.
인코딩 속도가 20% 나 더 늘어나기 때문에 현재로선 추천하고 싶지 않지만,
혹시라도 화질이나 모션에 도움이 될것 같으면 시험해 보길 바랍니다.
Custom Matrices : Xvid 처럼 custom matrices 를 사용할수 있습니다.
여러가지가 있기 때문에 직접 시험해 보고
마음에 드는것을 사용하길 바랍니다.
하지만 영화처럼 긴 시간의 인코딩이 아니라면,
x264 의 기본 matric 을 사용하는것을 추천합니다.
Secene Change : 한장면이 다음 장면으로 넘어갈때마다 인코더는
많은 양의I frame 을 사용합니다.
이 값은 얼마나 인코더가 넘어가는 한장면의 I frame 에 민감한지를
결정하는 옵션입니다.
[엑스트라 I frame 을 얼마나 더 넣어주는지를 가르켜줍니다]
만약에 어느 한 장면의 모션이 부드럽게 넘어가지 않으면,
이 값부터 바꿔봅니다.
기본값은 40 이지만, 보통 60 을 사용합니다.
그리고 복잡한 소스일 경우 100 까지도 설정합니다.
하지만 80 정도면 다해결되지 않을까 싶네요.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
인코딩 설정 프로파일(profiles)과 예제:
Virtualdub 에는 x264 의 모든 기능을 사용할수 없습니다.
그러니 Virtualdub 에 해당되는 옵션만 참고해 주세요.
그리고 아래 옵션의 값들은 x264 를 개발하고 있는 한사람이
어디까지나 참고사항으로 DOOM9 Forum 에 내놓은 것입니다.
소스마다,그리고 각개인의 취향에 따라서 달라질수 있다는 점 기억해주세요.
그리고 x264 의 옵션이 어떻게 발전되느냐에 따라 여기의 값들도 변할수 있습니다.
여러가지 x264 Build의 옵션까지 포함되어 있습니다.
2 PASS Standard Quality :
Mode = Automated 2 pass
Turbo = check
Keyframe Interval = 250
Frame reference = 5
B frames = 3
Pyramid/Reference = check
Mixed = check
Adaptive = check
Deblock = check (0,0)
CABAC = check
Subq = 5 (Multi Qp)
Weighted Prediction = check
Chroma ME = check
Macroblock options = ALL check
Profile = Main profile
Level = Unrestricted
QP = 0.7
SCD sensitivity = 60
Me = Multi hex
Me Range =16
b frame mode = Temporal
2 PASS Good Quality :
몇개의 옵션을 제외하고 위의 설정과 똑같습니다.
Frame reference = 10
Subq =7 (RDO)
Profile =High profile
***ROD for b frame = check
**Bidirectional ME = check
***Trellis = Final MB
2 PASS Max Quality :
몇개의 옵션을 제외하고두번 설정과 똑같습니다.
Frame reference = 16
Subq = 7
**No fast p-skip = check
***Trellis = always
Constant Quality (Single Pass VBR) :
Mode = Quality
Quality(Quantizer) = 14/15
Keyframe Interval = 250
Frame reference = 16
B frames = 3
Pyramid/Reference = check
Mixed = check
Adaptive = check
Deblock = check (-1,-1)
CABAC = check
Subq = 6
Weighted Prediction = check
Chroma ME = check
Macroblock options = ALL check
Profile = High profile
Level = Unrestricted
QP = 0.7
SCD sensitivity = 60
***ROD for b frame = check
**Bidirectional ME = check
Me = Multi hex
Me Range =16
b frame mode = Temporal
Constant Quantization :
위의 옵션과 똑같지만 QP 를 사용하지 않습니다.
Lossless :
Lossless = check
Quantizer= 1/2
Keyframe Interval = 250
Frame reference = 16
B frames = 0
Pyramid/Reference = check
Mixed = check
CABAC = check
Subq = 6
Weighted Prediction = check
Chroma ME = check
Macroblock options = ALL check
Profile = High profile
Level = Unrestricted
QP = 0.7
SCD sensitivity = 60
***ROD for b frame = check
Me = Multi hex
Me Range =16
b frame mode = Temporal
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Misc:
Virtualdub 을 사용하시는 분들을 위해 Max Quality Single Pass 세팅을 업합니다.
Virtualdub 에서 x264 의 모든 옵션을 사용하지 못한다고 해서
virtualdub 의 x264 인코딩이 안좋다는건 절대로 아닙니다!!
결과적으로 virtualdub 에서는 약간 glossy 하게 영상물이 나오는것 같더군요.
문제는 x264vfw gui개발이 현재 멈춰진 상태라는 겁니다.
다시말하자면,
x264 의 옵션을 사용할수 있게끔 vitualdub 의 interface 를
아무도 업데이트를 하지 않고 있다는 말입니다.
Quantizer 값이 내려갈수록 파일 사이즈는 커집니다.
Q = 1/2 에 b frame = 0 면 Lossless 인코딩이 되는겁니다.
max IDR frame interval = 500 을 주셔도 됩니다.
보통 23.97fps = 240, 25fps = 250, 29,97fps = 300, 이런 값을 줍니다.
이렇게 하면 10 초안에 정확히 프레임을 seek 할수 있다는 거죠.
위에 보면 알겠지만, x264 의 기본값은 괜찮습니다.
그래서 QP 와 scene cut threshold 외에는 설정을 바꾸지 않았습니다.
scene cut threshold 는 80 정도...
[max IDR = 250] 제일 적당하다고 생각합니다.
미리 말씀드렸지만,
max consecutive, 즉 b frame = 1 이상이 넘으면 꼭 adaptive 를 사용하세요.
마찬가지로 만약에 adaptive 를 사용안하시고
b frame 이 1 이상을 넘으면 모션이 많고
복잡한 장면의 질이 떨어질 가능성이 있습니다.
그리고 max ref frame = 5,10,16... 중에 고르세요~
5 가 standard quality 라고 생각하시면 됩니다.
16 은 시간 오래 걸립니다~
Deblock 은 개인의 취향에 맡깁니다.
그래도 애니메이션에는 (1.1) 넘지 말아주세요.
그리고 2 pass 인코딩 하실때는 똑같은 세팅으로 하시면 됩니다.
예를 들자면:
Update Statsfile 만 체크해주시고,
Statsfile name 에 이름만 넣어주시면 됩니다.
target bitrate 은 신경쓰지 마세요.
1pass 때는 bitrate 이 아무런 영향이 없습니다.
그리고 (Fast) 는 turbo 기능과 마찬가지로,
1pass 가 한시간정도(30분?) 밖에 걸리지 않게 해줍니다.

화면비 : 4x4 가로와 세로의 비율들이 각각 4의 배수가 되어야 한다는 것

- 4:3 일때
640x480 , 656x492 , 672x504 , 688x516 , 704x528 , 720x540 , 736x552 , 752x564, 768x576 , 784x588 , 800x600 ...
- 16:9 일때
640x360 , 704x396 , 768x432 , 832x468, 896x504 , 960x540 , 1024x576 ...

출처 : 애니코 HOLiC

반응형
l