왜 메타는 실시간 영상통화에 AV1을 선택했을까?

실시간 커뮤니케이션(RTC)에서 코덱 선택은 사용자 경험을 결정짓는 핵심 요소입니다. 메타가 AV1에 주목한 이유는 명확합니다. 동일한 화질을 유지하면서도 훨씬 적은 대역폭을 사용할 수 있기 때문이에요. 메타의 오프라인 테스트 결과에 따르면, 저사양 및 중급 기기에서 H.264/AVC 대비 최소 20%의 비트레이트 절감 효과를 확인했습니다. 네트워크 환경이 열악한 사용자에게는 이 차이가 곧 영상통화의 품질을 좌우합니다.

실제로 메타 RTC 제품에서 영상 비트레이트는 10kbps에서 400kbps 사이에서 변동합니다. 특히 100kbps 이하의 대역폭에서 좋은 화질을 유지하는 것은 매우 어려운 과제인데, AV1은 이 구간에서 탁월한 성능을 보여줍니다. 메신저 앱에서 두 대의 안드로이드 폰을 이용해 H.264/AVC와 AV1을 100kbps로 제한하고 비교한 결과, H.264/AVC는 눈에 띄게 흐릿한 반면 AV1은 훨씬 선명한 화질을 제공했습니다.

또한 AV1은 화면 공유와 같은 고주파수 콘텐츠(텍스트 등) 압축에도 강점이 있습니다. 팔레트 모드(Palette Mode)와 인트라 블록 카피(Intra-Block Copy) 같은 도구를 통해 기존 코덱이 어려워하던 복잡한 화면 콘텐츠를 효율적으로 처리합니다.

Network diagram showing bandwidth fluctuation and packet loss during a video call Developer Related Image

AV1 도입의 험난한 여정: 인코더/디코더 선택부터 시작

AV1의 장점은 분명하지만, RTC에 적용하는 과정은 결코 순탄치 않았습니다. 가장 먼저 부딪힌 문제는 바로 인코더와 디코더 선택이었어요.

저복잡도 인코더의 필요성

AV1은 뛰어난 압축 효율을 제공하지만, 그만큼 계산 복잡도가 높아 모바일 기기에서 전력 소모가 증가합니다. 메타의 오프라인 실험에서 픽셀 8 기기의 AV1 인코딩 시 전력 사용량이 H.264/AVC 대비 14% 증가하는 것을 확인했습니다. 이는 모바일 배포에 큰 걸림돌이었죠.

이를 해결하기 위해 메타는 저복잡도 인코더를 채택했습니다. 핵심은 H.264/AVC와 유사한 수준의 계산 복잡도를 유지하면서도 AV1의 압축 효율을 최대한 끌어내는 것이었습니다. 현대 코덱이 제공하는 다양한 프리셋을 활용해 기기 성능에 맞게 인코더 복잡도를 조절하는 메커니즘을 설계했습니다.

# 인코더 프리셋 선택 예시 (개념 코드)
def select_encoder_preset(device_capability_score):
    """기기 성능 점수에 따라 인코더 프리셋을 선택하는 함수"""
    if device_capability_score > 0.8:
        return "high_complexity"  # 고성능 기기: 최고 화질
    elif device_capability_score > 0.5:
        return "balanced"  # 중간 성능: 균형
    else:
        return "ultra_low_complexity"  # 저사양 기기: H.264와 유사한 복잡도

디코더 선택과 바이너리 크기 문제

디코더는 인코더보다 덜 복잡하지만, 저사양 기기에서는 여전히 문제가 됩니다. 메타는 여러 오픈소스 디코더를 비교한 결과, 전력 효율과 안정성에서 우수한 dav1d를 선택했습니다.

또 하나의 큰 난관은 바이너리 크기 증가였습니다. libAOM 기준으로 AV1 지원을 추가하면 앱 용량이 약 1.7MB(압축 시 600kB) 증가합니다. 수십억 사용자를 서비스하는 메타에게는 결코 무시할 수 없는 수치입니다. 바이너리 크기가 커지면 앱 업데이트 성공률이 떨어지고, 시작 시간이 길어지며, 메모리 사용량과 크래시율에 부정적인 영향을 미칩니다. 메타는 동적 다운로드 프레임워크, 라이브러리 최적화, 불필요한 도구 제거 등 다양한 방법으로 이 문제를 해결했습니다.

Smartphone displaying a video call with AV1 codec quality comparison Algorithm Concept Visual

AV1 적용 범위 확장: ML 기반 기기 호환성 판정

인코더와 디코더를 선택한 후에는 어떤 기기에서 AV1을 활성화할지 결정해야 합니다. iOS는 기기 종류가 제한적이라 비교적 쉬웠지만, Android는 수많은 기기 모델로 인해 훨씬 어려운 문제였습니다.

메타는 처음에 메모리, 출시 연도, OS 버전을 기준으로 기기를 선택하려 했지만, 이 방법은 신뢰할 수 없었습니다. 결국 ML 기반 기기 호환성 프레임워크를 개발했습니다. 이 프레임워크는 실제 사용자 통계 데이터를 기반으로 기기의 AV1 성능을 평가합니다.

# ML 기반 기기 호환성 평가 개념 코드
import pandas as pd
from sklearn.ensemble import RandomForestClassifier

# 로깅 파이프라인에서 수집된 저수준 성능 메트릭을 특징으로 사용
features = ['cpu_clock_speed', 'thermal_throttling', 'memory_bandwidth', 'gpu_usage']

# 각 기기의 RTC 성능 점수를 예측하는 모델 학습
def train_device_eligibility_model(training_data):
    model = RandomForestClassifier()
    model.fit(training_data[features], training_data['rtc_score'])
    return model

# rtc_score가 높으면 AV1 인코딩 가능, 낮으면 H.264 유지
def is_av1_eligible(device_metrics, model):
    rtc_score = model.predict([device_metrics])[0]
    return rtc_score >= 0.8

이 모델은 2025년에 크게 개선되어 고성능 기기와 저성능 기기를 구분하는 2계층 접근 방식을 도입했습니다. 이를 통해 AV1 적용 범위를 크게 확장할 수 있었습니다.

코드 복잡도 적응형 전략

ML 기반 기기 선별만으로는 충분하지 않았습니다. A/B 테스트 중 2023년 출시된 옥타코어 스마트폰에서도 320x180@15fps 인코딩을 실시간으로 처리하지 못하는 현상을 발견했습니다. 이는 통화 중 CPU 주파수가 제한(스로틀링)되기 때문입니다.

메타는 이를 해결하기 위해 세 가지 메커니즘을 개발했습니다.

  1. 적응형 인코더 프리셋 조정: 인코딩 지연 시간을 실시간으로 모니터링하여 인코더 복잡도를 동적으로 조절
  2. 로컬 기기 인코딩 지연 인식 코덱 전환: 인코더 프리셋으로 해결되지 않으면 H.264/AVC로 전환
  3. 피어 기기 디코딩 지연 인식 코덱 전환: 상대방 기기의 디코딩 지연을 피드백받아 필요 시 코덱 전환

이러한 적응형 전략을 통해 중급 기기에서는 H.264로 인코딩하지만 AV1으로 디코딩하는 비대칭 코덱 설계가 가능해졌습니다. 이를 통해 AV1 적용 범위를 크게 확장할 수 있었습니다.

Server racks representing the infrastructure for real-time communication processing Development Concept Image

AV1 통화 품질 개선: 비트레이트 제어와 오류 복원

AV1 적용 범위를 확장한 후에는 통화 품질 자체를 개선하는 것이 다음 과제였습니다. RTC에서 중요한 것은 순간적인 비트레이트 오버슈트(overshoot)를 방지하는 것입니다. 메타는 VBV(Video Buffering Verifier) 지연 시간을 지표로 사용하여 비트레이트 제어 정확도를 평가합니다.

정확한 비트레이트 제어

VBV 지연 시간은 인코더가 프레임을 얼마나 빠르게 전송할 수 있는지를 나타내는 지표입니다. RTC에서는 200ms 미만의 VBV 지연 시간을 유지하는 것이 중요합니다. 인코더 오버슈트가 발생하면 VBV 지연 시간이 늘어나고, 이는 네트워크 혼잡과 영상 프리즈로 이어질 수 있습니다.

메타는 VBV 버퍼 상태를 추적하여 비트레이트 할당을 조정하고, 키 프레임의 비트레이트를 엄격히 제어하며, 비트레이트 언더슈트(undershoot)도 방지하는 알고리즘을 개발했습니다. 언더슈트는 대역폭 추정을 왜곡하고 비트레이트 상승을 지연시켜 화질 저하를 초래할 수 있습니다.

오류 복원: TL과 LTR

패킷 손실에 대응하기 위해 메타는 Temporal Layer(TL)Long-Term Reference(LTR) 기술을 활용했습니다.

  • TL: 프레임을 시간적 계층 구조로 구성하여 기본 계층이 향상 계층 손실에도 영향을 받지 않도록 설계. 손실률이 높을 때만 적응적으로 활성화
  • LTR: 오래된 참조 프레임을 버퍼에 저장하고, 손실 발생 시 이전에 성공적으로 수신된 LTR을 기반으로 즉시 복원. H.264와 달리 AV1은 LTR 표시를 위한 명시적 시그널링이 필요해 RTP 헤더 확장을 통해 구현

결론: AV1 도입의 교훈과 앞으로의 방향

메타의 AV1 도입 사례는 단순한 코덱 교체 그 이상의 의미를 담고 있습니다. 저복잡도 인코더 설계, ML 기반 기기 호환성 판정, 적응형 코덱 전환, 정교한 비트레이트 제어와 오류 복원 기술은 실시간 영상통화 품질을 결정짓는 핵심 요소입니다.

특히 국내 개발자분들께 드리고 싶은 조언은, 코덱 전환은 단순히 라이브러리를 교체하는 문제가 아니라 전체 시스템 아키텍처의 재설계라는 점입니다. 메타의 사례처럼 인코더/디코더 선택부터 기기 호환성, 네트워크 적응, 오류 복원까지 전체 파이프라인을 고려한 종합적인 접근이 필요합니다.

AV1의 잠재력은 분명하지만, 아직 하드웨어 지원이 부족한 영역이 많습니다. 특히 그룹 통화에서는 여러 비디오 스트림을 동시에 디코딩해야 하므로 더 높은 성능이 요구됩니다. 메타는 SoC 제조사들이 모든 기기 계층에서 하드웨어 AV1을 지원하도록 촉구하고 있습니다.

다음 단계로는 AV1의 하드웨어 가속 지원 동향을 주시하고, 그룹 통화 시나리오에서의 성능 최적화 방법을 연구해보시는 것을 추천합니다. 함께 보면 좋은 글: 스포티파이가 광고 플랫폼을 멀티 에이전트 아키텍처로 재구축한 이유

본 콘텐츠는 신뢰할 수 있는 출처를 바탕으로 AI 도구를 활용하여 초안이 작성되었으며, 편집자의 검토를 거쳐 발행되었습니다. 전문가의 조언을 대체하지 않습니다.