왜 메타는 FFmpeg 포크를 유지했을까?
FFmpeg는 오디오/비디오 처리의 사실상 표준 도구입니다. 메타는 하루 수백억 번의 FFmpeg 실행을 통해 사용자 업로드 영상을 처리하는데, 이 규모에서는 표준 FFmpeg로는 커버되지 않는 특수한 요구사항이 생깁니다. 예를 들어, 스레드 기반 멀티레인 인코딩이나 실시간 화질 메트릭 계산 같은 기능은 당시 공식 버전에 없었죠. 이에 메타는 자체 포크를 개발해 사용해왔습니다.
하지만 시간이 지나며 두 가지 큰 문제가 발생했습니다. 첫째, 포크 버전이 업스트림과 점점 멀어지며 새로운 코덱이나 형식 지원, 안정성 개선을 적용하기 어려워졌습니다. 둘째, 포크와 공식 버전을 병행 유지하는 것은 기능 세트의 괴리와 리베이스 시의 회귀(regression) 위험을 키웠습니다. 이 문제의 해결책은 기능을 업스트림에 기여하고 포크를 완전히 폐기하는 것이었습니다.

핵심 문제 해결: 두 가지 업스트림 기여
메타가 업스트림에 기여하여 내부 포크 의존성을 제거한 두 가지 주요 기능을 살펴보겠습니다.
1. 효율적인 멀티레인 트랜스코딩 (FFmpeg 6.0~8.0)
사용자가 영상을 업로드하면, DASH(Dynamic Adaptive Streaming over HTTP) 재생을 위해 다양한 해상도/품질의 인코딩 세트를 생성합니다. 기존에는 각 인코딩을 별도 FFmpeg 프로세스로 실행해 디코딩 작업이 중복되는 비효율이 있었습니다. 단일 명령어로 여러 출력을 만드는 방법도 있지만, 이전 FFmpeg에서는 각 인코더가 프레임별로 순차적으로 실행되어 병렬성 부족 문제가 있었습니다.
메타 포크는 모든 인코더 인스턴스를 병렬로 실행하는 최적화를 제공했고, 이 디자인이 FFlabs, VideoLAN 개발자들과의 협력을 통해 FFmpeg 6.0부터 본격적으로, 8.0에서 마무리되어 업스트림에 통합되었습니다. 이는 FFmpeg 역사상 가장 복잡한 리팩토링 중 하나로 평가받으며, 모든 FFmpeg 사용자가 더 효율적인 인코딩을 할 수 있게 되었습니다.
2. 실시간 화질 메트릭 계산 (FFmpeg 7.0~)
압축에 따른 화질 손실을 수치화하는 VMAF, SSIM 같은 메트릭은 기존에는 인코딩이 완료된 후 별도 명령어로 계산 가능했습니다. 하지만 라이브스트리밍 환경에서는 인코딩과 동시에 실시간으로 메트릭을 얻어야 할 필요가 있습니다.
이를 위해선 각 출력 레인의 인코더 뒤에 비디오 디코더를 삽입해, 압축 적용 후의 프레임을 얻어 원본과 비교해야 합니다. '인-루프(In-loop) 디코딩' 기능이 FFmpeg 7.0부터 도입되며, 메타는 단일 FFmpeg 명령어로 각 인코딩 레인의 실시간 품질 메트릭을 생성할 수 있게 되었고, 이 기능 역시 포크 의존성에서 벗어날 수 있었습니다.
이러한 대규모 시스템 최적화는 스포티파이 앱 릴리스의 뒷모습 대시보드 설계와 자동화의 교훈에서 다룬 것처럼, 복잡한 파이프라인을 표준화하고 자동화하는 데서 오는 효용을 잘 보여줍니다.

업스트림 기여의 전략과 한계
메타는 실시간 화질 메트릭이나 효율적 스레딩처럼 커뮤니티 전반에 도움이 될 기능은 적극적으로 업스트림에 기여합니다. 하지만, 모든 패치를 공개하는 것은 아닙니다.
내부 유지가 합리적인 경우:
- Meta Scalable Video Processor (MSVP) 지원: 메타 자체 인프라에서만 사용하는 맞춤형 ASIC(주문형 반도체)에 대한 지원 패치는, 외부 개발자가 테스트하거나 유지보수할 수 없으므로 내부에 유지합니다. 다만, FFmpeg의 표준 하드웨어 API를 통해 구현해 다른 플랫폼(NVIDIA NVENC, Intel QSV 등)과 동일한 툴링을 사용할 수 있게 했습니다.
- 극도로 인프라 특화된 패치: 메타의 매우 구체적인 워크플로우에만 종속된 변경사항은 일반화하기 어렵습니다.
국내 개발 생태계에서의 시사점: 국내에서도 대규모 미디어 서비스를 운영한다면, 오픈소스 포크 유지보수의 부담은 동일하게 발생합니다. 메타의 사례는 조기에 업스트림과 협업하고, 표준 API를 준수하며, 일반화 가능한 기능은 커뮤니티에 환원하는 전략이 장기적으로 더 지속가능함을 보여줍니다. 특히, FFmpeg처럼 핵심 인프라 도구는 '벤더 락-인'을 피하고 생태계의 발전에 동참하는 것이 기술 부채를 줄이는 길입니다.

결론: 오픈소스 생태계와의 상생
더 효율적인 멀티레인 인코딩과 실시간 화질 메트릭 기능의 업스트림 통합으로, 메타는 모든 VOD 및 라이브스트리밍 파이프라인에서 내부 FFmpeg 포크를 완전히 폐기할 수 있었습니다. 이는 25년 이상 개발된 FFmpeg 생태계의 강력함과, 대기업이 오픈소스에 기여할 때의 상생 모델을 입증합니다.
다음 단계 학습 방향:
- FFmpeg 공식 문서에서
-filter_complex와 다중 출력을 이용한 고급 트랜스코딩 워크플로우를 학습해보세요. - 화질 평가 메트릭(VMAF, SSIM)의 원리와 FFmpeg에서의 계산 방법(
libvmaf필터)을 이해하는 것이 도움이 됩니다. - 대규모 시스템을 설계할 때, 특정 버전/포크에 과도하게 종속되지 않는 아키텍처를 고민해보는 것이 좋습니다.
메타의 FFmpeg 개선 사례는 데이터셋과 같은 AI 인프라에서도 중요한 교훈을 줍니다. 예를 들어, 브라질 AI를 위한 핵심 데이터셋, Nemotron-Personas-Brazil 출시에서 볼 수 있듯, 특정 지역/맥락에 맞는 고품질 데이터를 공개하는 것은 해당 생태계 전체의 발전을 촉진합니다. 기술의 진보는 폐쇄적 최적화보다는 생태계와의 건강한 상호작용에서 비롯된다는 점을 이 근거자료는 잘 보여주고 있습니다.