유튜브, 블루레이, 스마트폰 카메라, CCTV, 드론까지 지금 우리가 보는 거의 모든 동영상은 H.264 코덱 위에서 돌아간다. 이 표준은 30년 넘게 쌓인 영상 압축 연구가 "움직이는 영상을 전송하는 데 필요한 대역폭을 최대한 줄인다"는 단 하나의 목표로 수렴한 결과물이다. 실무자가 코덱 내부를 직접 구현할 일은 드물지만, 그 작동 원리를 이해하면 인코딩 설정, 품질과 용량의 트레이드오프, 스트리밍 서비스의 동작 방식을 훨씬 합리적으로 다룰 수 있다.
압축이 왜 필요한지는 숫자 하나로 분명해진다. 1080p 60Hz 영상을 압축 없이 저장하면 1920×1080 해상도에 픽셀당 3바이트, 초당 60프레임을 곱해 초당 약 370MB가 나온다. 이 속도라면 50GB 블루레이 디스크에 2분 남짓밖에 담지 못한다. 원문 저자가 든 예시도 극적이다. 애플 홈페이지 화면을 캡처해 300프레임 분량의 H.264 영상으로 만들면 175KB인데, 그 영상의 단 한 프레임을 PNG로 저장하면 1015KB다. 300배 많은 데이터를 담은 영상이 한 장짜리 이미지의 5분의 1 크기인 셈이다.
버릴 것과 남길 것
이 마법의 출발점은 손실 압축이라는 발상이다. PNG는 무손실 코덱이라 원본을 비트 단위로 그대로 복원하지만, H.264는 덜 중요한 비트를 과감히 버리고 중요한 것만 남긴다. 경주용 차의 뒷좌석과 에어컨을 떼어내 무게를 줄이는 것과 같다. 다만 화면의 특정 영역을 통째로 잘라내는 방식은 아니다. H.264는 "세부 정보(디테일)"를 골라 버린다. 스피커 그릴의 미세한 구멍 같은 것들은 지워지지만, 확대하지 않으면 사람 눈에는 차이가 보이지 않는다. 원문에서는 이 과정만으로 이미지가 원본의 7% 크기까지 줄었다고 설명한다.
세부 정보를 어떻게 골라내는가의 핵심에는 주파수 영역 변환이 있다. 이미지의 밝기 값을 x-y 좌표가 아니라 freqX, freqY라는 주파수 축으로 바꿔 표현하는 것이다. 미세하게 변하는 디테일은 고주파 성분, 완만한 그라데이션은 저주파 성분에 대응한다. 주파수 영역에서는 저주파가 중심에, 고주파가 가장자리에 모이므로, 가장자리를 마스크로 가려 버리면 고주파(디테일)만 선택적으로 제거된다. 다시 원래 좌표로 되돌리면 디테일은 조금 뭉개졌지만 용량은 극적으로 줄어든 이미지가 나온다. 마스크 크기를 조절해 디테일 수준을 정밀하게 조정하는 이 과정이 바로 양자화(quantization)다. 원문은 정보 엔트로피 기준 2%까지 줄여도 이 정도 확대가 아니면 차이를 못 느낀다고 말한다.
색을 속이는 기술
두 번째 무게 감량은 색 정보에 손을 댄다. 사람의 눈과 뇌는 밝기 변화에는 민감하지만 색의 미세한 차이는 잘 구분하지 못한다. 그래서 RGB 데이터를 밝기(Y)와 색차(Cb, Cr)로 분리하는 YCbCr 표현을 쓴다. 이 방식은 흑백 TV 시절 호환성을 위해 고안된 것으로, 흑백 수상기는 Y만 읽고 컬러 수상기는 색차까지 읽어 RGB로 변환했다. H.264는 여기서 밝기 Y는 전체 해상도로, 색차 성분은 4분의 1 해상도로만 인코딩한다. 눈이 색 변화에 둔한 특성 덕분에 시각적 손해는 거의 없이 전체 대역폭을 절반으로 줄인다. 크로마 서브샘플링이라 불리는 이 기법은 H.264 고유의 것은 아니지만 사실상 모든 영상에서 보편적으로 쓰인다.
시간을 압축하다
여기까지는 한 프레임 안의 공간적 압축에 불과하다. H.264의 진짜 힘은 시간 축을 다루는 모션 보상에 있다. 고정된 각도로 찍은 테니스 경기를 떠올려 보자. 코트, 네트, 관중은 전부 멈춰 있고 실제로 움직이는 건 공뿐이다. 그렇다면 배경은 한 번만 저장하고 공의 움직임만 기록하면 된다. H.264는 화면을 보통 16×16 픽셀의 매크로블록으로 나눈 뒤, 모든 비트를 담은 완전한 기준 프레임인 I-프레임을 두고, 이후 프레임은 P-프레임이나 B-프레임으로 처리한다. P-프레임은 이전 프레임 대비 각 매크로블록의 움직임을 모션 벡터로만 기록하고, B-프레임은 과거와 미래 프레임 양쪽을 참조해 예측한다. 앞서 본 애플 홈페이지 영상이 극단적으로 작았던 이유도 여기 있다. 사실상 세 장의 I-프레임 속에서 매크로블록이 패닝되고 있을 뿐이기 때문이다.
이 구조는 일상적인 사용자 경험까지 설명해 준다. 유튜브에서 몇 초 앞으로 되감았을 때 네트워크에 이미 버퍼된 구간인데도 잠깐 멈춘 뒤에야 재생되는 현상이다. 임의의 프레임으로 건너뛰라는 요청을 받으면 디코더는 가장 가까운 I-프레임부터 시작해 목표 프레임까지 모션 벡터 델타를 차례로 더해 화면을 재구성해야 한다. 그 짧은 멈춤은 디코더가 놀고 있는 게 아니라 실제로 계산을 하고 있다는 신호인 셈이다.
실무적으로 보면 이 원리들은 인코딩 선택의 근거가 된다. 양자화 강도는 비트레이트와 화질을 맞바꾸는 조절 손잡이이고, GOP 구조(I/P/B 프레임 배치)는 탐색 응답성과 압축률 사이의 균형을 결정한다. 크로마 서브샘플링은 일반 영상에서는 유리하지만, 색 경계가 선명해야 하는 화면 텍스트나 스크린 캐스트에서는 열화의 원인이 되기도 한다. 압축은 공짜가 아니라 사람 눈이 놓치는 지점을 정교하게 골라 희생시키는 거래이며, 그 거래 구조를 알아야 어떤 콘텐츠에 어떤 설정이 적합한지 판단할 수 있다.