이전 포스트: 3부 - 동영상의 기본구조에 대해

앞서 동영상파일의 기본구조에 대해서도 알아봤으니 이제 본격적으로 인코딩을 해보자.
일단 인코딩하기에 앞서 제일 중요한것은 비트레이트이다.
물론 고급옵션을 건드리면 화질향상을 노릴수는 있지만 큰 차이는 별로 없다.
따라서 높은 화질을 요한다면 역시 비트레이트는 높게 잡아주는것이 좋다.

그렇다고 한없이 높게 잡아주는것도 아니다.
보통 800 * 448정도라던지 하는 사이즈라면 3000~4000k 정도라면 충분하며
1280*720정도라면 5000~6000k 정도면 아주 충분히 소장용버젼의 가치가 있는 화질이 나온다.
그 이상은 차이가 별로 없기 때문에 의미는 없다고 보는게 좋다.
물론 이것은 게임영상의 예기이다.
보통 애니메이션이나 필름(영화)영상은 2500k ~ 3000k 정도면 충분히 소장용 화질이 나온다.
실제로 현재 H264코덱으로 릴되고있는 애니나 필름영상도 모두 2500~3000k 정도로 릴되고있다.
물론 1080p정도 사이즈가 되면 5000k정도로 올라가긴 한다.

일단 본인조차도 H264코덱에 대해 깊이 아는것이 아니라서 부족할지도 모르지만 현재 H264로 릴하는 립퍼들 역시 이 코덱에 대해 깊이 알고있는것이 아니라서 화면이 깨진다던지 하는 부분이 나오는 모습을 자주볼수 있다.
그도 그럴것이 현재 H264 코덱은 현재진행형으로 개발단계에 있기 때문이다.
즉 미완성 코덱이란 예기이다.
또한 인코딩옵션이 워낙 많고 방대해서 립퍼들이라도 그것을 전부 다 알고있는 사람은 없지 않을까 싶다.
그만큼 H264코덱이 다루기 어려운 코덱이긴 하지만 화질하나는 정말 끝내주게 좋은 코덱이다.
다만 하드웨어를 많이 가린다는것과 압축률이 워낙세서 디코드하는데 부하가 좀 심한편이라는게 단점이긴 하다.

일단 옵션을 전부 설명하는것은 무리이고 중요한 옵션을 몇개만 다루어보고자 한다.
설명은 megui 기준으로 할것이다.

일단 아래의 설명에 들어가기전에 아래의 포스팅을 짚고 넘어가시라

본인의 x264 옵션설명

<프레임의 기초>
프레임이란 무엇인가하면 그전에 동영상데이터가 어떤 구조로 이루어져 있는지 알아두어야 한다.
먼저 영상데이터는 이미지의 연속으로 이루어져있다.
그림을 한장한장 그려서 연속적으로 넘기는 방식으로 이루어져 있다.
이 상태의 데이터를 무압축데이터라고 부른다.
영상의 압축은 이러한 그림의 한장한장을 어떻게 압축하느냐에 달려있는데
코덱이라는 녀석이 이 데이터를 압축하고 해석하는 능력을 가지고 있다.

먼저 코덱이 어떻게 영상을 압축하는가를 알아보면
일단 코덱에서는 모든 프레임의 픽셀정보가 아니라 중요한 프레임이라고 예상되는 프레임을 자동으로 감지해서 그 프레임의 픽셀정보만 남겨두고 나머지는 전부 날려버린다. 그런 실제 픽셀정보가 담긴 프레임을 키프레임이라고 부른다. 나머지는 전부 예측으로 보여준다. 즉, 실제 픽셀정보에 기반해 보여주는게 아니라 단순한 코덱에서의 예측으로 보여준다는 소리이다. 모든 코덱이 이러한 방식으로 이루어져 있는데, 보통 키프레임은 코덱이 자동으로 잡아주는데 장면과 장면이 바뀌는 지점에서 알아서 삽입을 한다.

이렇게 키프레임과 키프레임 사이의 영상을 어떻게 예측해서 보여줄것인가를 디코딩이라고 부르고, 이러한 키프레임과 키프레임 사이의 예측정보를 어떻게 만들것인가를 인코딩이라고 부른다.

이정도로 프레임의 기초를 마치도록 하고 이제 실제 중요한 옵션에 대해 알아보도록 하자.

<Main 탭>
●General 영역
- Mode: 인코딩모드를 지정한다. quantizer, 2pass, 3pass, quality, ABR 모드가 있고 Turbo 모드에 체크를 하면 인코딩시간이 줄어든다고 한다.
- Bitrate: 비트레이트나 quantizer값등의 모드에 따른 세부수치를 지정하는데 lossless에 체크를하면 무손실압축으로 작동하지만 추천하는바는 아니다 ㄱ-

ABR: 1pass 인코딩이다. 비트레이트를 일정하게 부어준다.
Quantizer: 지정된 값으로 영상을 가변비트율로 비트레이트를 부어준다. 용량이라던지 비트레이트를 알수가 없다는 단점이 치명적이지만 화질하나는 보장한다. 보통 10까지는 무손실급, 15정도는 울트라초고화질, 18정도가 초고화질, 22정도가 고화질에 속한다. 26정도가 웹에서 볼만한 고화질수준 28정도가 웹에서 볼만한 중간급 화질정도이다. 이 값은 소스에따라 전부 틀려진다. 얼마의 값을 부어줄건지는 경험을통해 알게된다고 한다.
Quality: Quantizer와 마찬가지로 가변비트율이다. 차이는 잘 모르겠다 ㄱ-
2pass: 영상을 2번 나누어 인코딩 하는데 첫번째는 대략적인 분석, 두번째에 실인코딩이 들어간다.
3pass: 2pass와 같지만 이녀석은 3번 이상의 인코딩을 여러번 거칠수 있다. 오더는 1,3,2인데 1,3,3,2는 4pass, 1,3,3,3,2는 5pass가 된다. 3을 여러번 늘리는것으로 pass수를 늘릴수 있다. 얼마까지 늘어나는지는 모르겠지만 보통 5pass면거의 화질보정이 멈춘다고한다.

●Deblocking 영역
- strenth / threshold: 정확한 설명은 잘 모르지만 (영어가 된다면 모르겠지만, 전문용어라 영어가 된다고 쳐도 이해하긴 어려울것이다.) -3 ~ 3까지 변하는데 마이너스로 갈수록 샤픈해지고 플러스로 갈수록 스무스하게 되는데 보통 HD립 영상들은 -3, -3으로 세팅한다고 한다. 화질이 깨끗한 원본인 경우 0,0 으로 세팅할것을 권장하고 좀더 자세한 정보를 알고 싶다면 이하의 사이트를 방문해 보길 권한다

종스비님의 x264 deblocking 값에 따른 화질차이
오호라님의x264 Deblocking 값에 따른 화질 비교

●Misc영역
- fourCC: Hex로 열면 맨 앞에 나오는 4글자를 말한다. 이 값에 의해 디코딩할 코덱을 찾아 연결해 재생하는데 쓰이는데 보통은 아무거나 주어도 상관없지만 Vegas7 정도의 편집기에서 열려거든 avc1으로 세트하지 않으면 안됀다. 또한 플래시의 기술을 사용해 제작된 UCC들도 avc1 이라고 넣는것이 좋다. -> avc1 이 본래 H264의 표준 fourCC이다.

<RC and ME 탭>
●ME 영역
모션감지라고 해서 그것과 관련된 세팅이다. 본래 코덱에서는 데이터를 압축할때 키프레임 단위로 압축을 하고 예측을 해서 보여주는데, 보다 자세한 내용은 위의 본인의 x264 옵션설명과 프레임의 기초부분을 참고해서 보시고, ME라는 것은 이런 예측정보에서 움직임을 잠지해 내는 것을 말한다.
- Chroma ME: 모션감지능력을 보다 효과적으로 행한다. 화질에 현격한 영향을 주므로 체크한다.
- MERange: 모션을 감지할 최대영역이다. 값이 클수록 화질이 올라가지만 반대로 인코딩시간도 올라간다. 일단 고화질애니메이션의 경우는 32로 세팅한다. 게임영상도 마찬가지로 32로 세팅.
- Scene Change Sensitivity: 장면변화의 예민한 정도를 나타낸다. 값이 높을수록 과도한 장면변화가 있는 부분에서 보다 키프레임을 많이 삽입해 퀄리티를 높인다. 초고화질정도의 영상이라면 80정도로 세팅한다. 기본값인 40으로 놓는 립퍼도 있다.
- MEAlgorithm: 모션감지 알고리즘을 선택한다. 고화질의 경우는 Multi hex정도를 넣는다
- Subpixel Refinement: 모션감지에 있어서 영상에 파티션을 어떻게 줄것인가를 결정하는 옵션이다. 6정도가 좋고 7로 주면 아주 쩌는 화질이 나온다.

●Misc 영역
- Keyframe Interval: 키프레임을 주는 최대간격을 말한다. 값이 적을수록 키프레임이 많이 들어가지만 용량이 상승
- Min GOP Size: 키프레임의 최소간격을 말한다. Max의 10분의 1을 세트하는것이 보통이다. 이 값은 fps값과 같은 값을 세트하면 되지만 뭐 상관없다.

●Quant Options 영역
- CABAC: Context Adaptive Binary Arithmetic Coding을 사용한다. 보통 CABAC를 사용하면 디코딩에 부하가 많이걸리지만 압축률 역시 좋아져 용량도 절약한다. 하지만 끄면 디코드의 부하가 적어지는 대신 압축률이 낮아져 용량역시 늘어난다. 보통 켜는 편이다.
- No Dct Decimation / No Fast P-Skip: 화질과 퀄리티에 영향을 많이 준다. 둘다 켜도록 뭐하는진 나도 모른다 ㄱ-

<Advanced 탭>
●Quantizer Matrices: 화질에 역시 가장 중요한 역할을 차지하는 녀석이다. 보통은 기본으로 쓰는데 1부 포스트에서 올린 Matrix를 받은경우에는 여기에 그것을 세트하면 된다. 화질보정과 관계가 있다.


여기까지 중요한 옵션을 살펴봤는데 나머진 나도 모르거나 까먹은 부분이다 ㄱ-;
신경 쓰인다면 1부 포스트에서 올린 x264 profile부분을 참고해도 좋다.

좀더 자세한 정보를 보고싶거든 아래의 블로그를 방문해 보시라

http://blog.naver.com/PostView.nhn?blogId=jongsbee&logNo=20054878124&categoryNo=0&viewdate=&cpage=1&postListTopCurrentPage=1

물론 H264는 더 자세하게 알고싶거든 doom9.org 를 방문할것을 권하지만 이쪽은 영어권 사이트이다. H264에 대해 더 깊이있게 알려거든 영어는 필수로 알아야한다. 국내에선 깊이있는 정보는 얻을수 없다는것을 명심해라. 물론 일본어도 알면 좋은데 일본의 립퍼들의 정보도 상당한 도움이 된다.

오디오 인코딩은 간단하니까 넘어간다. 역시 megui에서 인코딩하면 된다.
소장용이라면 320, 448, 640k로 세팅하고 웹공개용은 192k정도면 충분한 고화질이다.
니코비디오 같은곳은 128k정도 추천.

일단 코덱에 대해 살펴봤는데 아직 본격적인 인코딩을 들어가기엔 이르다.
다음포스트에선 avisynth에 대해 살펴보고 실제 인코딩과 먹싱등에 대해 알아보도록 한다.

다음 포스트: 5부 - avisynth와 먹싱, 인코딩, 추출

Posted by MOBIUS!
,