비디오 코덱이란?

비디오 코덱은 비디오 데이터를 압축해서 작게 만들고, 다시 풀어서 재생할 수 있게 해주는 규격이다.

⭐ 결론부터 말하면 인코더 가 비디오를 압축시켜 비트 스크림 으로 만들고 디코더가 다시 프레임들로 복원하는 구조이다. → 이때 연산, 데이터량, 발열 등이 전부 트레이트오프 관계에 있다!

<aside> 💡

비디오 코덱의 개념

동작 방식은 쉽게 설명하면 아래와 같다.

  1. 프레임 내부 압축 : 블록 분할, 변환(DCT 계열), 양자화로 한 프레임 내 중복을 줄인다.
  2. 프레임 압축 : 이전, 이후 프레임과의 차이만 저장하는 예측으로 시간적 중복을 줄인다.
  3. 엔트로피 코딩 : 남은 데이터에 통계적 압축을 적용해 비트 수를 더 줄인다. </aside>

🤔 그런데 굳이 왜 비디오 코덱을 통해 비디오 데이터를 압축하고.. 다시 복원하는 절차를 해야하는걸까?

한 번 상상해보면 아래와 같이 예를 들 수 있을 것이다.

만약, 어디 여행을 떠나서 30분짜리 비디오를 촬영했다고 가정해보자.

이 비디오가 만약 압축되지 않았다면 그 크기는 엄청날 것이다.

그 압축되지 않은 쌩 비디오를 휴대폰에 저장하거나 카카오톡이나 에어드랍과 같이 네트워크를 통해 전송하려고 하는 것은 정말 비효율의 끝판왕일 것이다.

압축되지 않은 비디오를 저장하는 과정을 나열하면 아래와 같을 것이다.

  1. 비디오를 HD(1920 * 1080)의 풀 컬러(Pixel 당 4Byte로 가정) 비디오의 한 프레임은 8,294,400 바이트일 것이다.
  2. 이때 초당 30 프레임이라고 가정한다면 HD 비디오의 1초는 248,832,000 바이트( ~ 약 250MB) 일 것이다. (1초가…?)
  3. 그렇다면 HD 1분은 단순 계산해도 약 1.4GB이다.
  4. 30분짜리 비디오라고 하면 약 47GB 이며 만약 2시간짜리 어벤져스 영화다? 그러면 거의 약 170GB이다.

⚡ 여기서 명심해야할 게 비디오 만 이다. 오디오나 특수한 오버헤드를 제외한 것이다..