rate-control

1 개의 포스트

meta3분 읽기큐레이션 요약

대규모 실시간 통신(RTC)을 위한 AV1 도입

Meta는 실시간 통신(RTC)에서 AV1을 도입해 H.264/AVC보다 낮은 비트레이트로 비슷하거나 더 나은 화질을 제공하고, 저대역폭 환경의 통화 품질을 개선했다. 그러나 300ms 이하의 지연 시간, 네트워크 변화와 패킷 손실, 모바일 기기의 전력·메모리 제약 때문에 VOD보다 훨씬 복잡한 문제가 발생했다. Meta는 저복잡도 인코더와 기기별 프리셋, 효율적인 디코더를 적용해 2023년 고급 기기 중심이던 AV1 지원을 대부분의 모바일 기기로 확대했다. ## AV1을 RTC에 도입한 이유 - 동일한 화질을 유지하면서 H.264/AVC보다 훨씬 낮은 비트레이트를 사용할 수 있다. - Meta의 오프라인 테스트에서 제품 설정 기준 AV1은 저가·중급 기기에서 H.264/AVC보다 최소 20% 낮은 비트레이트를 기록했다. - RTC 영상 통화의 비트레이트는 실제 환경에서 약 10~400kbps까지 크게 변하며, 특히 100kbps 이하에서 화질을 유지하기 어렵다. - 100kbps로 비교했을 때 H.264/AVC 영상은 흐릿했지만 AV1 영상은 더 선명하게 유지됐다. - 화면 공유나 컴퓨터 생성 콘텐츠에도 유리하다. - **Palette mode**: 화면에 반복적으로 등장하는 제한된 색상 집합을 효율적으로 표현한다. - **Intra-block copy**: 같은 프레임 안의 반복 패턴을 참조해 텍스트와 고주파 화면 콘텐츠를 더 잘 압축한다. ## RTC 환경에서의 도입 난제 - RTC는 대화 지연을 줄이기 위해 종단 간 지연 시간을 이상적으로 300ms 이하로 유지해야 한다. - 화질 개선 기법과 낮은 지연 시간 사이에 trade-off가 존재한다. - 다중 패스 인코딩은 화질을 높이지만 추가 지연을 만든다. - 디코더의 큰 버퍼는 지연 시간을 증가시킨다. - 갑작스러운 비트레이트 상승은 영상 멈춤을 유발할 수 있다. - 네트워크 대역폭 변화에 따라 해상도와 프레임 레이트를 동적으로 조정해야 한다. - 해상도 변경에는 보통 새 키 프레임이 필요해 순간적인 비트레이트 급증과 프리징이 발생할 수 있다. - 패킷 손실 역시 재전송이나 추가 키 프레임을 유발해 영상 정지를 일으킨다. - 모바일 클라이언트는 실시간 인코딩과 디코딩을 동시에 수행하므로 전력 효율도 중요한 요소다. ## 인코더 선택과 모바일 제약 - AV1은 고급 코딩 도구 덕분에 압축 효율이 높지만, 특히 인코딩 계산량이 크다. - 오픈소스 AV1 인코더를 Pixel 8에서 테스트한 결과 H.264/AVC보다 전력 사용량이 14% 증가했다. - AV1은 H.264/AVC보다 메모리 사용량도 많아 모바일 앱의 크래시 증가로 이어졌다. - 따라서 단순히 압축 효율이 높은 인코더가 아니라, 화질·복잡도·전력 소비를 함께 조절할 수 있는 인코더가 필요했다. ## 저복잡도 AV1 인코더 - 최신 코덱이 반드시 높은 복잡도의 인코더를 요구하는 것은 아니다. - 다양한 코딩 도구를 활용하면 여러 수준의 품질과 계산량을 프리셋으로 제공할 수 있다. - Meta는 고복잡도 프리셋을 최적화하는 동시에 H.264/AVC와 비슷한 계산량을 갖는 **초저복잡도 프리셋**을 개발했다. - 기기 성능에 따라 인코더 프리셋을 자동 선택하도록 설계해 중급·저가 기기까지 AV1 지원 범위를 넓혔다. - 그 결과 고급 기기에서만 가능하다고 여겨졌던 AV1을 더 다양한 모바일 기기에 적용할 수 있었다. ## 디코더 선택 - 디코더는 일반적으로 인코더보다 복잡도가 낮지만, 저가 모바일 기기에서는 실시간 디코딩조차 부담이 될 수 있다. - 초기 A/B 테스트에서 일부 저가 기기는 AV1을 실시간으로 디코딩하지 못해 영상 프리징과 오디오·비디오 동기화 문제가 발생했다. - Meta는 여러 오픈소스 디코더를 비교한 뒤 전력 효율과 안정성이 우수한 **dav1d**를 선택했다. - 이는 AV1 도입 시 인코더뿐 아니라 실제 기기에서의 디코딩 성능과 전력 소비도 함께 검증해야 함을 보여준다. ## 실용적인 결론 RTC에서 AV1을 도입하려면 코덱의 압축 효율만 평가해서는 부족하다. 기기별 인코더 복잡도 조절, 전력·메모리 사용량, 디코더 안정성, 비트레이트 급증과 패킷 손실에 대한 대응을 함께 설계해야 하며, 특히 저가 기기까지 지원하려면 초저복잡도 인코더와 기기별 최적화가 핵심이다.

원문 읽기(새 탭에서 열림)