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

2015년 8월 15일 토요일

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




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


- 코덱 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개에 여러개의 영상, 여러개의 음성(대부분 여러 언어의 음성을 지원하기 위한 용도),

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

0 개의 댓글 :

댓글 쓰기