Chapter 02. 동영상의 압축원리

 1. 압축방식

 동영상도 어차피 "연속적인 그림"이라고 볼 수 있는데, 이를 압축하지 않는다면 1분 정도의 동영상을 저장하면 그 용량이 1GB 정도가 될 것입니다. 따라서, 동영상은 필수적으로 압축과정을 거칠 수 밖에 없습니다.

 1) 비손실 압축과 손실 압축

 압축방식에는 비손실 압축과 손실 압축이 있습니다.

비손실 압축이란, 프로그램이나 데이터등의 압축에 사용되는 zip, rar 등등의 압축방식이 있으며 원본 그대로를 압축하기 때문에 압축을 풀면 원본에서 전혀 손상되지 않은 데이터를 그대로 복원하게 됩니다.

손실 압축이란 압축되지 않은 그림 파일인 BMP파일을 JPG로 압축하는 경우를 생각하시면 되겠습니다. 이런 형태의 압축은 원본의 일부분을 변경하는 식으로 압축이 이루어지는 것이기 때문에 절대 원본과 똑같이 되돌릴 수 없습니다. 간혹, RM파일같이 압축률은 매우 높지만 화질은 떨어지는 동영상을 mpeg등의 형태로 바꾸면 화질이 좋아지지 않을까 생각하는 초보분들을 보는데 RM 파일 자체가 이미 손실 압축된 상태이기 때문에 이를 mpeg으로 만든다고 해도 용량만 커질 뿐 화질을 더 좋게 만들 수는 없는 것입니다.(물론, 이런 변환과정에서 화질 향상을 위해 여러 가지 필터들을 적용해서 약간의 효과를 볼 수는 있지만, 화질 좋은 원본을 압축한 것과는 비교할 수 없는 수준입니다.)

 2) 공간적 압축과 시간적 압축

 그림 파일의 압축에서 사용하는 압축원리는 몇 개의 유사한 색깔을 띄는 점들을 묶어 평균적인 색깔을 띄는 블록으로 바꾸는 경우가 주로 사용되는데 이런 압축방식을 공간적 압축이라고 합니다.

동영상의 압축에서는 이런 공간적 압축은 물론이고, 시간적인 압축 방식도 사용되는데, 키프레임(Key Frame)과 델타 프레임(Delta Frame)을 이용하는 방법을 쓰고 있습니다.

 3) 키 프레임(Key Frame)과 델타 프레임(Delta Frame)

 앞서 설명한 바와 같이 디지털 동영상의 경우에는 공간적 압축에 부가해 시간적 압축도 사용하는데, 그 원리가 Key Frame과 Delta Frame입니다.

 

시간적으로 압축되지 않은 동영상
 
위의 그림은 시간적으로 압축되지 않은 동영상을 보여줍니다. 5개의 프레임이 모두 완전한 그림임을 볼 수 있습니다.

 

시간적으로 압축된 동영상
 
그러나 위의 그림처럼 시간적으로 압축된 동영상의 경우는 ①번과 ⑤번만 완전한 그림이고 2,3,4번은 완전하지 않은 그림임을 볼 수 있습니다.
이때 ①번과 ⑤번처럼 완전한 그림은 Key Frame이며, 2,3,4번처럼 완전하지 않은 그림은 Delta Frame이 되는 것입니다. 이 델타 프레임은 키 프레임에서 변경된 부분의 정보만을 담고 있는 것이며, 5번째에는 1번에서 변경된 정보의 양이 너무 많아 완전한 화면이 되었고, 결국 다시 키프레임이 된 것입니다.
이렇게 연속되는 프레임들을 키 프레임과 델타 프레임으로 나누게 되면, 모든 프레임을 완전한 프레임으로 만드는 방식보다는 훨씬 용량을 줄일 수 있습니다. 이런 압축방식을 시간적 압축이라고 합니다.
DivX를 비롯해 mpeg등의 동영상은 모두 이런 시간적 압축방식을 채택하고 있는데, 여기에는 몇가지 문제점이 있습니다. 대표적인 것은, 동영상중 일부분을 끊어내거나 특정 위치로 바로 이동해 재생하는 등의 조작을 할 때 반드시 키 프레임이 있어야 델타 프레임의 재생이 가능한 것입니다. 만약, 키 프레임이 없는 상태의 델타 프레임만 있다면 이때에는 기준은 없고 기준에서 변화된 부분에 대한 데이터만 있는 것이라서 재생이 제대로 되지 못합니다.
결론적으로 DivX를 비롯한 동영상의 편집시에는 반드시 키프레임에서 끊고, 이어야 제대로 된 파일이 만들어지게 되는 것입니다.
 
4) VKI(Variable Key Frame Interval)
 
동영상 인코딩시 키 프레임은 델타 프레임보다 많은 용량을 가지게 됩니다. 따라서, 키 프레임의 수를 줄이는 것은 용량을 줄이는 효과가 있습니다.
대체로, 키 프레임은 일정한 간격으로 들어가도록 인코딩되는 경우가 일반적이지만, 동영상은 다양한 장면들을 담고 있기 때문에 이런 방법이 비효율적인 경우가 많습니다.
배경이나 동작의 변화가 아주 적은 장면이 지속되는 부분에서 쓸데없이 키 프레임이 많이 들어가는 것은 용량의 낭비일 뿐이며, 동작의 변화가 심한 장면에서 키 프레임을 일정한 간격으로 넣게 되면 키 프레임보다 오히려 델타 프레임의 크기가 더 커지는 상태가 됩니다.
따라서, 동작 변화가 심한 부분은 키 프레임을 보다 자주 넣고 동작 변화가 적은 부분에서는 키 프레임을 가끔씩 넣는 식으로 키 프레임의 간격을 가변적으로 하면 용량을 줄일 수 있는 효율적인 방법이 될 것이며, 이런 방식을 VKI(Variable Key Frame Interval)이라고 합니다.
 
본래 DivX 3.11a 코덱에서는 일정한 시간간격으로 키프레임을 넣도록 만들어져 있으나, 이것을 개량해 자동적으로 키 프레임을 변화시킬 수 있는 형태로 변경한 코덱이 개발되었으며 DivX VKI patch 또는 DivX 3.20 코덱으로 알려져 있는 것입니다.
현재 널리 사용되고 있는 SBC 인코딩 방법에서는 DivX 3.20 코덱을 쓰지 않고 DivX 3.11a를 그대로 사용하면서 보다 향상된 VKI 기능을 적용할 수 있습니다.
또한, DivX 4.x 코덱은 자체적으로 VKI 기능을 내장하고 있습니다.
 
2. 코덱(Codec)
 
1) 코덱이란?
 
아마도, 동영상과 관련해 가장 많이 듣게 되는 말이 "코덱(Codec)"일 것입니다. 초보분들의 경우에는 도대체 코덱이 뭔가 대단히 궁금해 하시는 분들이 많은데, 이는 동영상의 압축/복원 방식 또는 프로그램을 말합니다.
동영상은 필수적으로 압축과정을 거칠 수 밖에 없으며, 이렇게 압축된 데이터를 복원하는(압축을 푸는) 과정이 있어야 재생이 가능한 것입니다. 코덱(CODEC)은 이런 압축(COmpress)과 복원(DECompress)이라는 단어의 합성어입니다. 그런데, 이런 압축 방법 또는 프로그램들이 워낙 다양하다보니 수많은 코덱들이 생겨나게 되었으며, 지금 이 시간에도 어디선가는 새로운 코덱이 개발되고 있을 것입니다.
 
자물쇠는 그 자물쇠에 맞는 열쇠로 열어야 하듯이, A라는 코덱으로 만들어진 동영상은 A라는 코덱이 컴퓨터에 설치되어 있어야 재생이 가능한 것입니다.
 
2) DivX;-) 코덱은?
 
DIVX는 본래 대여용 동영상 매체에 관한 프로젝트였습니다만, 이는 그 프로젝트 자체가 없어져 버렸기 때문에 완전히 사장된 것입니다.
현재의 DivX;-) 코덱은 처음의 DIVX와는 이름만 같은 뿐 아무런 연관성이 없습니다. 이 코덱은 Microsoft社 (이하 MS로 씁니다.)의 mpeg4 코덱을 몇 명의 해커들이 해킹해 만들어낸 것으로 기본적으로는 MS의 mpeg4 코덱과 완전히 같습니다.
♣ Mpeg4는 실제로는 동영상 관련 기술 표준을 의미합니다만, 대체로 Mpeg4라면 MS의 코덱을 지칭하는 것으로 쓰이고 있습니다. ♣
이 DivX;-) 코덱은 압축률이 워낙 뛰어나기 때문에 현재 일반적으로 사용되는 영상매체로는 가장 화질이 뛰어나다는 DVD를 이 코덱을 사용해 재 압축하면 원본보다 화질은 약간 떨어지지만 용량을 대폭 줄일 수 있는 이점이 있어 각광을 받기 시작했습니다.
몇 차례의 버전업을 거친 후 마지막으로 릴리즈(release)된 버전이 DivX;-) 3.11 alpha 코덱입니다. (2001년 현재)
이 코덱은 Low motion과 Fast motion 이라는 두 개의 코덱이 한 세트를 이루고 있는 형태입니다. 이중에서 Low motion 코덱은 대체로 느린 동영상에 적합하고, Fast motion은 빠른 동영상에 적합하다고 하지만, 실제로는 Fast motion의 경우 화질에 문제가 있어 거의 사용되지 않습니다.
그 이후로는 Project Mayo 라는 새로운 팀을 조직해 MS의 mpeg4 코덱을 기반으로 한 것이 아닌 독자적인 코덱의 개발을 진행하고 있는데, 새로 개발될 코덱의 이름은 DivX DUEX로 알려져 있었습니다. 이 개발과정의 일환으로 중간단계의 시험용 코덱들이 지속적으로 공개되었는데 이 코덱들은 소스코드까지 공개되기 때문에 Open DivX코덱으로 불립니다.
Open DivX 코덱 이외에도 3ivX 코덱, Angelpotion 코덱, Kristal 코덱 등등의 수많은 mpeg4 코덱들이 나오고 있으며, 최근에 Project Mayo 그룹에서 개발한 DivX 4.x 코덱이 나왔습니다.
한가지 아쉬운 점은 예전의 Open DivX 코덱과 달리 DivX 4.x 코덱은 소스코드가 공개되지 않았으며, 일부 시스템 또는 동영상 관련 프로그램 등과 문제가 발생하는 경우가 있는 것으로 알려져 있습니다. 따라서, 어떠한 코덱도 완벽이란 없다고 할 수 있겠습니다.
 
3. 비트 레이트(Bit Rate)
 
비디오 및 오디오의 품질에 가장 큰 영향을 주는 것은 bit rate입니다. 이것은 비디오나 오디오를 인코딩할 때 사용되는 데이터의 양(kb/s)을 말하며, 이 수치가 높을수록 질은 좋아지나 용량은 급증하게 됩니다.
물론, 앞서 설명한 바와 같이 화면크기도 용량에 영향을 주지만, 비트레이트가 훨씬 더 큰 영향을 미치기 때문에 결국 DivX의 화질과 용량은 거의 이것에 의해 좌우된다해도 과언이 아닙니다.
 
1) CBR(Constant Bit Rate)
 
이것은 말 그대로 고정된 bit rate를 적용하는 경우입니다. 가장 대표적인 예가 MP3 오디오에서 볼 수 있는 128kb/s 또는 160kb/s 같은 형태입니다. 이렇게 고정된 bit rate를 사용하는 경우에는 재생시 안정적이긴 하지만, 별로 데이터가 많이 필요 없는 부분에서는 데이터의 낭비가 일어나고 데이터가 많이 필요한 부분에서는 질이 떨어지는 문제가 있습니다.
일반 VCD에서 사용하는 mpeg 형식의 동영상은 1150kb/s의 CBR 형태로 되어 있습니다. 하지만, DivX;-) 3.x 및 DivX 4.x 코덱은 CBR이 아닌 VBR 방식을 사용하고 있습니다.
 
2) VBR(Variable Bit Rate)
 
이것은 CBR의 단점을 개선하기 위한 방안으로 나온 것으로 비디오나 오디오 데이터의 부분마다 필요한 데이터량이 적어도 될 부분은 비트레이트를 줄이고, 데이터량이 많이 필요한 부분에서는 비트레이트를 늘리는 방식으로 가변적인 비트레이트를 사용하는 형식입니다. 비디오를 예로 들자면, 빠른 동작에서는 비트레이트를 크게하고 느린 동작에서는 비트레이트를 줄이는 식입니다.
DivX 코덱은 기본적으로 VBR 형식으로 되어 있기 때문에 CBR 형태인 VCD보다 용량을 줄일 수 있는 것입니다.
♣ 최근에는 DivX 4.x 코덱을 사용한 인코딩 방법 중에 2pass VBR 이라는 방법이 있기 때문에 DivX 4.x 코덱을 사용한 경우에 VBR 이란 말을 붙이는 경우가 많습니다만, 본래 모든 DivX 코덱은 다 VBR 식입니다.
DivX 동영상에서 오디오는 본래 CBR MP3 형식을 사용해 왔었습니다만, 현재는 예전과 달리 이 오디오 부분도 VBR MP3 형식으로 인코딩하는 프로그램들이 개발되어 있으므로 보다 효율적인 오디오 인코딩이 가능해 졌습니다.
 
3) ABR(Average Bit Rate)
 
이 형식은 VBR과 유사한 형태이나 VBR이 비트레이트의 변동폭을 지정해 인코딩 되는 데 반해서 이 형식은 목표로 하는 평균적인 비트레이트만을 지정해 준 다음 프로그램이 자동적으로 지정된 평균 비트레이트 수치에 근접하게 비트레이트를 변경시켜가면서 인코딩하는 방식입니다.
이런 방법은 주로 MP3 오디오 인코딩에 적용되며, 엄밀하게 따지자면 DivX 동영상 코덱의 VBR도 이 방식과 유사하다고 할 수 있겠습니다.
 

내용출처 : Hananet Movie Club CINE   DivX Total Manual V4.2

'멀티미디어 > 일반 자료' 카테고리의 다른 글

Chapter 06. DVD와 DivX  (0) 2009.03.18
Chapter 05. 오디오(Audio)  (0) 2009.03.18
Chapter 04. DivX 인코딩과 Deinterlacing / IVTC  (0) 2009.03.18
Chapter 03. Telecine & IVTC  (0) 2009.03.18
Chapter 01. 프레임(Frame)  (0) 2009.03.18
블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,