Hacker News웹 · 프론트엔드

H.264가 영상을 300배 줄이는 방법

원제 H.264 Is Magic (2016)

138 포인트댓글 58
Key Point

화소당 수십 바이트를 필요로 하는 영상 데이터를 수백 배 이상 압축하는 구조를 이해하면, 인터넷 동영상이 실시간 재생되고 드론과 보안카메라가 원활하게 작동하는 이유를 알 수 있다.

핵심 요약

  • H.264는 영상 압축 코덱으로 인터넷 영상, 블루레이, 핸드폰, 보안카메라 등 거의 모든 곳에서 쓰인다. 압축 없이 저장하면 1080p 60Hz 영상이 초당 370MB 이상 용량을 차지해 실용적이지 않다.
  • H.264의 핵심은 손실 압축(lossy compression)으로, 중요하지 않은 부분의 정보를 버린다. PNG처럼 모든 정보를 유지하는 무손실 압축과 달리, H.264는 사람이 감지하기 어려운 세부사항을 제거한다.
  • 양자화(quantization)라는 기법으로 영상을 주파수 영역으로 변환하고, 고주파 성분(세밀한 디테일)을 마스킹해 제거하면 사람 눈에 거의 띄지 않으면서도 용량을 극도로 줄일 수 있다.
  • 색상 부표본화(chroma subsampling)를 사용해 색 정보를 1/4로 줄인다. 인간의 눈이 밝기 변화에 비해 색 변화를 감지하기 어렵기 때문에 가능하며, 이 단계에서 대역폭을 50% 줄인다.
  • 모션 보상(motion compensation)은 시간 축 압축으로, 영상을 16×16 픽셀의 매크로블록으로 나누고 I-프레임(완전 프레임), P-프레임(예측), B-프레임(양방향 예측)으로 인코딩한다.
  • 300프레임 영상에서 실제로는 3개의 I-프레임만 저장하고 나머지는 모션 벡터 변화만 기록하므로 매우 효율적이다. YouTube에서 드래그해 다시 재생할 때 멈추는 이유는 디코더가 가장 가까운 I-프레임부터 모션 벡터를 누적 계산해야 하기 때문이다.
  • 엔트로피 인코더라는 무손실 압축을 최종 단계로 적용해 중복된 정보를 더 줄인다. 많은 매크로블록이 같은 모션 벡터값을 가지므로 이를 효율적으로 인코딩할 수 있다.
  • Apple 홈페이지 스크린샷은 단일 PNG로 1015KB이지만, 같은 내용을 5초 60fps H.264 영상(300프레임)으로 압축하면 175KB가 된다. 수학적으로 1.2GB 원본 영상이 175KB로 압축되면 약 6850배 축소된 것이다.
AI 요약 안내

AI가 한국어로 정리한 내용입니다. 정확한 정보는 원문을 확인해 주세요.

요약 원칙 ↗