일단 샘플이 될 동영상이다.


화면 크기 1280*720p

프레임 29.970f(=30f)

비디오비트 2500 kbps

오디오비트 128 kbps

합 2628 kbps


1.동영상을 압축하는 방법

1번은 안봐도 된다. 알고싶다면 보도록 하자.


이건 위 동영상을 캡쳐한 사진이다.

둘다 화면크기는 1280*720이고 오른쪽은 jpg

왼쪽은 bmp

(캡쳐하면 jpg로 나오고, 그것을 bmp로 변환해줬다)




jpg와 bmp의 가장 큰 차이는 용량.

압축 방법이 다르기때문에 용량도 다르다.

jpg는 사진의 모양을 유동적으로 저장하는 반면, bmp는 파일 전체를 픽셀로 나눠서 그대로 저장한다.


그러니까 jpg는 화면크기가 같더라도, 사진이 복잡할수록 용량이 늘어나고,

bmp는 화면크기가 같다면, 복잡하던 복잡하지않던 용량이 같다.


오른쪽파일을 복사해서 화면전체를 검정색으로 칠하면(bmp)




두장의 용량이 완전히 같다.




같은방법으로 jpg파일을 검정색으로 칠하면 용량이 달라진다.




이 얘기를 하는 이유는 동영상의 압축방법을 이해하기 위해선, 위 내용을 이해해야 한다고 생각하기 때문이다.




다시 맨 위의 사진을 보자.

1280*720 bmp파일의 용량은 2701KB

초당 29.970(편의상 30)장의 사진이 재생되고

재생시간은 총 27분53초, 1673초


그러면

총 50190장의 사진이 필요하고, bmp파일의 장당 용량이 2701KB이니까


압축하지않은 1280*720 30f 27분53초짜리 동영상의 용량은 약 "135GB"


jpg파일로 같은 연산을 할 경우

약 "4.8 GB"


위와같이 특별한 방법으로 동영상을 압축하지않으면 용량이 너무 크게 나온다.


그래서 동영상은 아주 특별한 방법으로 압축하게 되는데,


바로 앞,뒤사진을 비교해서

"색이 변하는 부분만" 저장하는거다.


예를들어 7*1크기의 다음과 같은 7프레임을 가진 동영상이 있다.


첫프레임은 첫픽셀에 붉은색, 나머지는 흰색(빈칸)

두번재프레임은 첫픽셀에 붉은색,두번째픽셀에 주황색, 나머지는 흰색(빈칸)

이런식으로 7프레임짜리 동영상이 있다.

다시말해

빨강 흰색 흰색 흰색 흰색 흰색 흰색

빨강 주황 흰색 흰색 흰색 흰색 흰색

빨강 주황 녹색 흰색 흰색 흰색 흰색

과 같이 저장한다.

위와같이 압축하지 않은 동영상은 7프레임 각각의사진을 저장하지만



위에서 쓴것처럼 '색이변하는 부분만 저장'하게되면

1>2프레임부분에서 왼쪽에서 두번째픽셀에 주황색

2>3프레임부분에서 왼쪽에서 세번째픽셀에 노란색

3>4프레임부분에서 왼쪽에서 네번째픽셀에 초록색

다시쓰면,

2 2 주황

3 3 노랑

4 4 초록

으로도 저장할수 있게 된다.

(뒷프레임 프레임좌표 색깔)

단, 간간히 한 프레임을 그대로 저장해야하는데

이 프레임을 '키프레임'이라고 한다.

이렇게하면 용량이 획기적으로 줄어들게된다.

다음팟 옵션에서 키프레임1로 인코딩하는 경우는 나도 잘 모르겠다.

이론상으로는 위처럼 몇십기가씩 나와야 정상인데 그렇지가 않네...;


다시말해서,

같은 화질의 동영상 여러개가 있다면,

화면이 복잡할수록(빨리,많이변할수록) 용량이 크고

그 반대의 경우는 용량이 작다 라는 뜻이 된다.




위 동영상을보면


시발존나게 깜박인다

이렇게 화면이 빨리빨리 변할수록 용량이 기하급수적으로 늘어나게 된다.

이 외에도 배경이 LED일때, 마찬가지로 용량이 늘어나게 된다.



이에비해 뮤비의 경우 세트장에서 촬영하기때문에 

용량이 상당히 적게 나온다.


뒷배경의 대부분이 급격하게 변하지 않기때문이다.




이것이

같은 품질(다음팟)로 인코딩했을때


무대영상과 뮤비의 용량이 크게 차이나는 이유이다.




2. x264 옵션 (MeGUI)


1번과달리 이부분은 정말 간략하게 소개하겠다.

나도 잘 알지못하고, 다른글을 복사해와서 설명한다해도 알아들을사람도 몇명 없을것이고,

자세히 알아봤자 쓸모도 없다.






메구이에서 Config누르면 나오는 창이다(옆에 x264를 선택해야함)


아래 사진은 Show Advanced Settings 누른뒤, 인코딩 모드를 쭉 보여주는 부분이다.


ABR

Const.Quantizer

Const.Quality

Automated 2pass

Automated 3pass

3pass-1st,2nd,3rd

2pass-1st,2nd

쭉 있다.


정리하자면


ABR은 비트 고정

Const 두개는 다음팟의 품질기준인코딩과 비슷하고,

Automated 2pass는 다음팟의 투패스와 비슷하며

3pass,2pass는 투패스시 옵션을 설정해야하는 말그대로 '고급자옵션'


위에서 부터 순서대로 설명해 보자면,


ABR은 비트를 사용자가 정한 값으로 고정시킨다.

아무리 복잡한 화면이라도, 반대로 아무리 간단한화면이라도 일정값으로 고정


갑자기 존나깜박이다가 갑자기 어두운화면이었다가

그런 동영상도 비트가 고정된다.

어두운부분은 지나치게 고화질이되고, 깜박이는 부분은 지나치게 저화질이됨.


따라서 이 옵션은 좋지 못하다고 볼수있다.

ABR

장점:빠르다,용량이 예상가능함

단점:화질이 병신...


Const. Quantizer

Const. Quality

이 두개는 거의 비슷하다.


동영상을 압축할때 

뭐 이지랄 저지랄하면서 여러 숫자들을 뽑아내고

그 숫자들을 기준으로 인코딩하는데


그 숫자중에 '양자화 수치(Quantization Parameter)'를 고정시키고

그 숫자를 기준으로 인코딩하는 방법

Quality는 CRF(Const Rate Factor)을 고정한다고 하는데, 결과는 비슷함

Quantizer나 Quality나 인코딩시간도 비슷하고 방법도 비슷하고 용량도 비슷하고 화질도 비슷하다.


Quality가 화질이 아주 조금 더 뛰어나다고 하는데, 구별 못할수준.


이 두개는 양자화 수치를 상수화(고정)시켜서 동영상 전체를 일정한 화질로 만들어준다.

복잡한부분에선 비트가 쭉 올라가고

복잡하지않은 부분에서는 비트가 줄어든다.

대부분의 소장용 동영상은 이 방법으로 만들어진다.

두개 모두 0~51의 값이 사용가능하고, 주로 20~25의 값이 사용됨.


Const.Quality / Const.Quantizer

장점:화질이 일정하다,빠르다

단점:용량예측불가능

그리고 화면크기가 클수록 용량이 커진다.


Automated 2pass

2pass


이 두개는 간단히 설명하자면

Const.Quantizer로 한번 인코딩해서


몇초~몇초는 비트가 5천쯤되고

몇초~몇초는 비트가 3천쯤되고

이런거를 그래프로 그린다음

적분해서 시간으로 나누면 평균비트를 구할수있다.


그 평균비트에 적당한 숫자를 곱해서

'사용자가 정한 비트값'에 근접하도록

Const.Quantizer인코딩을 한번 더 한다.


2pass-1st pass

2pass -2nd pass

이 두개는 각각의 인코딩하는 부분에서의 옵션을 세부적으로 조정하는 부분인데

필자도 사용법은 잘 모른다.


아, 참고로 2번의 인코딩중 '앞의 인코딩은 버리는 인코딩이다'

AVS사용해서 필터떡칠하면 속도가 엄청 느려지는데, 

필터를 지우고 avs저장한 뒤, 2pass인코딩 실행하고, 필터를 다시 써서 저장하면

첫번째 인코딩을 매우 빠르게 할수있다.


2pass

장점:화질이 일정하다. 용량이 예측가능하다

단점:2번인코딩하므로 느리다.


3pass는 써본적이 없어서 잘은 모르겠다.

하지만

찾아본 바로는

Const.Quantizer인코딩을 하는데,

첫번째에서 대략적인 그래프를 그리고

두번째에서 섬세하게 그리고

세번째에서 진짜인코딩

이라고 한다.


3pass

장점:화질이 일정하다.용량이 예측가능하다. 2pass보다 존나조금화질이좋아진다

단점:시간이 3배




용량 계산법은 시간(초)*비트(kbps)/8000 = 용량(MB)





3. 화질 추천값

(이부분에선 모든 동영상의 화면비율이 16:9라고 가정)


일단

무대영상,뮤비,예능,애니 4부분으로 나눠보자.


2pass의 경우

무대영상 : 소장용 1만이상 업로드용 3~4천

뮤비 : 소장용 7~8천 업로드용 2~3천

예능 : 용도에 상관없이 1500~2500

애니 : 아무리 고화질이어도 3D애니 아닌이상 2천정도면 충분

소장용동영상은 2pass하지말고 CRF값을 이용하자.

1편과 2편의 화질이 차이가 날수있기때문임


Const.Quality / Const.Quantizer의 경우(CRF값)

720p

무대영상 : 23~24

뮤비 : 22~23


504p

무대영상 : 21~22

뮤비 20~21


(애니와 예능은 돌려본적이 없는데, 22.5~24정도 주면 적당한화질에 적당한 용량 나올거라 예상함)

소장용은 크기에 관계없이 21 이하 추천(18이하는 1내릴때마다 용량이 기하급수적으로 늘어난다)


720p와 504p의 넓이 비는

2.04배이므로 ((720/504)^2)

같은 crf값을 사용했으면, 용량이 2.04배정도가 되야 정상.






요약

1.메구이쓰세요

2.용량 많이잡지마세요

3.티스토리 미안..



===========================내용추가===========================


인터레이스 프로그레시브 필름 이런거 설명하기엔 너무길고, 어려워서 정말 간략하게 설명함.


인터레이스보단 프로그레시브가 화질좋고(인터레이스는 가로줄 죽죽)

인터레이스를 프로그레시브로 바꾸는 방법이 '디인터레이싱'

프로그레시브라도 필드설정 잘못하면 화면떨리고 가로줄죽죽


필름기반의 인터레이싱(tv에서 보여주기위해)은 5장에 2장씩 가로줄 죽죽그어져있다.

다시 필름(24f)로 바꾸는 방법이 'IVTC' 뮤비는 꼭 하자.


그리고 동영상이름에

720p60f

30i이런것들 보는법은


맨 앞의 큰 숫자는 프레임 '높이'

p=프로그레시브

i=인터레이스드

두번째 24,30,48,60(주로 이숫자들)은 초당 프레임수


30i,60f이런식으로 쓰여있는 값은

프레임수

인터레이스드or프로그레시브