코덱의 종류

2014년 10월 20일 월요일

코덱의 종류


) DV 코덱

디지털 캠코더에 사용되는 코덱으로서 IEEE 1394 카드를 통해 컴퓨터로 전송된다. 5:1의 압축률을 가지고 있으며 방송용 화질에 맞먹는 고화질을 자랑한다.

2) MJPEG
정지 이미지 포맷인 JPEG를 동영상 형태로 만든 코덱으로서 일부 아날로그용 편집 보드나 디지털 카메라에서 촬영되는 동영상에 많이 사용된다.화질은 뛰어나지만 일반적인 코덱에 비해 파일의 용량이 크다는 단점이 있다.

3) Cinepak
윈도우즈에 기본적으로 포함되어 있는 코덱으로서 인코딩(영상파일을 코덱을 이용하여 압축된 영상으로 만들거나 다른 파일로 변환시키는 것) 속도는 느린 편이나 용량에 비해 좋은 화질을 얻을 수 있어 한 때 시디롬 타이틀에 주로 사용되었다. 그러나 화질이 좋지 않다는 약점때문에 지금은 거의 사용되지 않는다.

4) Intel Indeo
시디롬 재생을 위해서 24비트 비디오 압축을 위해 사용되었던 코덱이다. Cinepak의 단점을 보완하여 비교적 높은 압축률과 다소 나은 화질, 보다 빠른 인코딩 시간이라는 장점을 가짐으로써 Cinepak과 함께 많이 사용되었으나 역시 지금은 거의 사용되지 않는다.

5) DivX
작은 용량에도 불구하고 DVD급의 화질을 보여주기 때문에 인기가 높은 코덱 중의 하나이다. 장시간 재생이 필요한 영화 등을 인터넷 등을 통해 배포할 때 많이 사용되며 용량 대비 화질이 좋은 편에 속한다. DivX는 MS사의 MPEG4 코덱을 모태로 한다. MPEG4  코덱은 슬로모션, 패스트 모션, 화질 등에 따라 V1, V2, V3의 세가지가 있는데 MS 사에서는 이 코덱을 이용하여 AVI포맷으로의 인코딩이나 재생 기능을 막아버리고 실시간 재생의 스트림 포맷인 asf 파일만 재생할 수 있도록 하였기 때문에 이것을 크랙하여 DivX라는 이름의 코덱이 등장하게 된 것이다.

6) XviD
DivX 코덱이 버전 업을 하면서 상용으로 탈바꿈하게 된 것에 반발하여 등장한 코덱으로서 오픈 소소 공개소프트웨어이다. DivX와 마찬가지로 MPEG4를 기반으로 한다. DivX 코덱에 비해 리소스를 조금 더 차지하는 것으로 알려져 있지만 역시 DivX와 유사한 용량을 차지하면서도 다소 나은 화질을 보여주는 것으로 알려져 있어 최근에 가장 많이 사용되는 코덱 중의 하나로 자리잡고 있다.

7) H.264
디지털 TV 영상을 비롯하여 고해상도의 HD 영상이 보편화되면서 파일의 용량이 더욱 커지게 됨에 따라 등장한 높은 압축률을 갖는 코덱이다. 실제로 HDTV 수신카드에서 캡쳐한 1920*1080 고해상도의 TP 파일을 1/4 정도의 크기로 압축하면서도 원본과 유사한 화질을 보여준다. 다만 H.264 코덱을 사용한 영상은 재생 시 CPU 리소스를 많이 차지하므로 최소한 팬티엄 IV 3.0G 이상이나 듀얼코어 CPU가 장착된 시스템에서 원활히 재생된다.

비교적 최근에 출시된 그래픽 카드에는 H.264 코덱에 대한 가속을 지원하므로 이러한 그래픽 카드를 장착하면 그만큼 CPU의 부담을 줄일 수 있어 더욱 매끄럽게 재생되는 영상을 볼 수 있다. H.264 코덱 지원 그래픽 카드로는 NVIDIA GeForce 8000 시리즈(8800은제외), GeForce 9000 시리즈, ATI HD2000 시리즈(2900XT제외), HD3000, HD4000 시리즈 등이 있다.

-------------
위키피디아의 내용을 바탕으로 각 포맷간의 차이점에 대해 간단히 알아본다.


1. 파일포맷, 코덱, 데이터 스트림

포맷간의 차이를 설명하기에 앞서 우선 용어부터 정확히 짚고 넘어가자.


- 코덱 vs 영상 표준(규격)

흔히 많이들 아는 DIVX나 H.264라는 단어는 코덱 이름을 지칭하는 말이다.

위의 두가지 코덱과 함께 유명한 것이 XVID(DIVX의 반대), x264라는 코덱이다.

쉽게 말해 코덱은 영상을 압축/압축해제하는 프로그램이다.

대부분 소프트웨어이지만, 하드웨어 일 수 도 있다.


여기서 혼동하지 말아야 할 것이 코덱과 영상 압축 표준(규격)이다.

H.264는 코덱을 의미하기도 하지만, 기본적으로는 영상 압축 표준을 의미하는 말이다.
(MPEG-4 Part 10라고도 한다. 이 용어는 코덱이 아닌 영상 압축 표준 만을 의미한다.)

x264 코덱도 마찬가지로 'H.264 영상 표준'에 따라 영상을 압축/압축 해제한다.

그러니까, 'H.264 코덱'과 'x264 코덱'으로 압축한 영상은 같은 영상이다.

DIVX는 DivXNetworks라는 회사의 브랜드 네임이자, 코덱의 이름이다.

DIVX가 따르는 영상 표준의 이름은 따로 있다. MPEG-4 Part 2와 MPEG-4 Part 10(H.264)이다.

그러면 마찬가지로 XVID 코덱은  MPEG-4 Part 2와 MPEG-4 Part 10(H.264) 영상 표준에 따라 압축/해제 하는 프로그램이다.


사실상 H.264의 경우처럼 '영상 표준'과 '코덱'은 이름이 같아 엄밀히 구분할 필요는 없다.

그러나 간혹 H.264로 압축된 영상과 x264로 압축된 영상이 다른 것이라고 생각하는 사람이 있다.

위의 설명을 읽었다면 그것이 '영상 표준'과 '코덱'을 혼동했기 때문이라는 것을 알 것이다.
(당연히도, DIVX 코덱으로 압축한 영상과 XVID로 압축한 영상은 같은 것이다.)


덤으로, 그럼 왜 x264나 XVID같은 프로그램이 나온 것일까?

이유는 아주 간단한데 H.264, DIVX코덱은 상용이기 때문이다. x264와 XVID는 오픈소스이다.


- 포맷 vs 데이터 스트림


앞으로의 글에서는 영상 표준 대신에 친숙한 코덱이라는 말을 사용한다.


데이터 스트림을 설명하기 위해 예를 들자면,

가장 친숙한 동영상 포맷인 AVI와 같은 파일에는 크게 영상과 음성이 있다.

여기서 각 데이터, 이를테면 영상 데이터를 데이터 스트림이라고 한다.

쉽게 말해서 코덱으로 압축한 '영상 데이터 자체'를 데이터 스트림이라 한다.


AVI, ASF, 그리고 최근에 많이 사용되는 MKV, MP4 같은 동영상 포맷들에서

영상 데이터 스트림은 여러가지 코덱을 사용할 수 있다.

무슨 말이냐 하면, AVI에 DIVX로 코덱된 영상 데이터만 넣을 수 있는 것이 아니라

H.264나 기타 다른 코덱으로 압축된 영상 데이터도 넣을 수 있다는 말이다.

아래에서 자세히 다루겠지만 MKV같은 경우 여러 종류의 데이터 스트림 뿐만 아니라,

'여러 개'의 데이터 스트림도 지원한다.

파일 1개에 여러개의 영상, 여러개의 음성(대부분 여러 언어의 음성을 지원하기 위한 용도),

여러개의 자막(역시 여러 언어의 자막을 위해)을 지원하기도 한다.



2. 포맷별 지원 코덱 및 특징

mkv: 오픈포맷, 코덱 제약 없음. 한 파일 내에 여러 개의 영상/음성/자막 삽입 가능.

avi: 기본적으로 여러 코덱을 지원하고,
여러개의 영상, 음성을 삽입할 수 있으나 제약이 많음. 자막 삽입 불가.

mp4
- 영상: H.264 등. 여러 코덱 지원
- 음성: AAC 등. 여러 코덱 지원
- 자막: MPEG-4 Timed Text (3GPP Timed Text)

m4v: DRM지원, 음성 AC3 지원. 그 외 mp4와 모두 동일

mov: 퀵타임7부터는 여러 음성 삽입 가능. 그 외 mp4와 매우 유사


mp4, m4v, mov는 아주 유사한 포맷이라서 단순히 mp4하나만 대표 포맷으로 보자.

avi는 오래된 포맷이라 제약이 조금 많다.

포맷의 기능면에서 보면 mkv > mp4 > avi 순으로 좋다고 할 수 있다.


또한 여기서 자막 기능이란, 예전에 avi에서 영상 안에 글자를 입히는 식의

쉽게 말해 영상과 글자를 합성하는 것과는 다른 것이다.

이것은 한번 합성하면 글자를 지울 수도, 자막을 끌 수도 없지만 mkv, mp4에서 지원하는 자막 삽입은

영상 데이터와 별도로 저장되서 자막을 켰다 끌 수도 있고 여러개의 자막을 넣고 그 중에서 선택할 수도 있다.


3. 아이폰 동영상 인코딩

위에서 설명한 것처럼 원래 mp4는 여러 종류의 동영상 코덱을 지원한다.

그런데 iPhone/iPod/iPad와 같은 일명 iDevice들은 mp4, m4v, mov 포맷(이하 대표로 mp4)이면서

H.264 규격과 AAC규격인 경우에만 기본적으로 지원하고 그 외에는 별도의 앱스를 이용해야 한다.

이렇게 제한한 이유는 iDevice에 H.264 하드웨어 코덱이 있는데 하드웨어 코덱은 소프트웨어 코덱(cpu 사용)보다

빠르고 배터리를 덜 먹는 등 장점이 있다.

애플에 따르면, iPad2에서 H.264+AAC로 된 mp4파일은 720p(1280x720) 동영상까지 재생이 가능하다.

그러나 DIVX 규격으로 된 mp4 혹은 avi 등등의 파일은 720p의 동영상만 돌려도 랙이 자주 걸린다.


요약하면 H.264 + AAC 타입의 파일을 써야 하는데, 여기에 특별히 쓸 수 있는 꼼수가 하나 있다.

동영상은 데이터 양이 아주 많아서(즉 용량이 커서) 인코딩 하는 시간이 아주 오래걸린다.

반면에 3기가에 달하는 720p짜리 mp4에서 음성은 고작 30MB(0.03기가)밖에 되지 않는다.

데이터 양이 1/100 수준이라 일반 영화의 경우 AC3등 다른 음성 데이터를 AAC로 인코딩 하는데는 고작 2~5분밖에 걸리지 않는다.
(음성 인코딩이 5분 걸리는 컴퓨터에서 영상은 1시간은 넘게 걸릴 것이다.)

이렇게 음성만 인코딩 하는 방법은 http://snoopybox.co.kr/1403 에서 프로그램을 내려받을 수 있다.

4. 요약

1) 코덱 vs 영상 표준(규격)

'영상 표준'과 '코덱'을 혼동하지 말자.
H.264코덱으로 인코딩(압축)된 영상과 x264코덱으로 압축된 영상은 같은 것이다.

2) 포맷 vs 데이터 스트림

영상 포맷(avi,mp4등)은 다양한 종류의 코덱으로 압축된 영상(데이터 스트림)을 지원한다.
또한 여러개의 데이터 스트림을 저장할 수도 있다. 여러 '종류', 여러 '개'

3) 포맷별 지원 코덱 및 특징

mp4, m4v, mov는 아주아주 유사한 포맷이다. 셋중에 대표적으로 mp4를 꼽으면
mkv > mp4 > avi 순으로 좋다고 할 수 있다. mkv가 가장 저장할 수 있는 데이터가 자유롭다.

4) 아이폰 동영상 인코딩

mkv,avi 등 파일이 H.264(x264)로 인코딩 되었는데 음성이 AAC가 아니라면
음성만 인코딩 함으로써 아주 빠른 시간 내에 파일을 mp4로 만들 수 있다.


5. reference

mkv, http://en.wikipedia.org/wiki/Matroska
avi, http://en.wikipedia.org/wiki/Avi
mp4, http://en.wikipedia.org/wiki/Mp4
m4v, http://en.wikipedia.org/wiki/M4v
mov, http://en.wikipedia.org/wiki/.mov
애플 iPad2 영상 재생, http://www.apple.com/ipad/specs/

아이폰 동영상 인코딩, http://snoopybox.co.kr/1403

댓글 1개 :