Search
🟢

deer.b3.1.1.5.1.1__1.1. title: 코덱, 인코딩, 디코딩의 관계 (MJPEG, H.264)

🚀 prev note
♻️ prev note
🚀 next note
♻️ next note
17 more properties
비디오(동영상)를 녹화하는 경우를 생각해 보자. 우리가 흔히 스마트폰으로 촬영한 사진을 친구에게 전송할 때 장당 3.0MB 정도의 데이터를 사용한다는 것을 알 수 있다. 이 사진도 알고보면 압축이 된 상태라고 할 수 있다. 우리가 촬영하는 동영상이라는 것은 사실 사진과 동일한 해상도의 사진을 수십 장 붙여 둔 결과물이라는 것은 누구나 알고 있는 사실이다. 그러면 아무리 동영상이 압축된 사진의 집합이라고 할지라도 동영상을 전송할 때 1초만 촬영해도 90MB (30장/초), 1분만 넘어가도 수 GB 단위로 나의 데이터를 소진해야 할테다. 그런데 우리는 수 분짜리 긴 동영상들도 수십 MB 만 사용해서 친구와 주고받을 수 있는 세상에 살고 있다. 도대체 어떻게 이런 것이 가능할까?
사진뿐 아니라 동영상도 영상 각각의 데이터는 너무 크기때문에 그대로 저장했다가는 그대로 낭패를 볼 수 있다. 1초에 30장씩 사진을 찍어서 합친 효과의 동영상을 만들고자 하는 상황을 상상해 보자. MJPEG 방식은 한 장 한 장을 압축한 뒤, 압축한 결과를 붙여서 동영상을 만든다. 반면 H.264 방식은 사진 한 장 한 장 사이에서 달라진 부분만을 집중적으로 저장해서 동영상을 만든다 (참고2).
이렇게 압축하거나 움직임을 중심으로 서술하는 등의 작업을 인코딩이라고 한다. 인코딩을 거치면 우리가 일반적으로 생각하는 ‘한 장 한 장의 집합' 벗어나기 때문에 이러한 동영상을 재생하고자 할 때 다시 우리가 생각하는 ‘한 장 한 장의 집합' 으로 복원해 내야 한다. 이를 디코딩이라고 한다.
당연히 MJPEG 방식으로 인코딩된 영상을 재생하기 위해서는 MJPEG 전용 디코더를 사용해야 하고, 다른 경우들도 마찬가지이다. 이러한 각각의 인코딩-디코딩 세트를 코덱이라고 부른다 (참고1).
참고