11 · VP9 — Google YouTube의 다리
이 문서가 답하는 질문: VP9의 자리는 어디이고, AV1 시대에도 의미가 있는가? 선행:
07-codecs-overview.md,10-codec-av1.md
한 줄 답
VP9은 Google이 HEVC를 회피하기 위해 만든 royalty-free 코덱이며, YouTube를 통해 전 세계 1080p+ 트래픽의 표준이 됐다. 효율은 HEVC와 비슷하고 AV1보다는 낮다 — AV1으로 가는 다리 역할이 끝나가고 있다.
Why — 왜 VP9이 만들어졌나
시간 순서
2009 On2 → Google에 인수 (1억 4천만 달러)
2010 VP8 오픈소스 발표 → WebM 컨테이너로 묶음
2013 VP9 발표 (HEVC와 같은 해)
2013 YouTube가 1080p+ 영상에 VP9 시범 적용
2018 AV1 발표 — VP9 후속이지만 다중 회사 합의동기
- HEVC는 라이선스 비용이 OTT에 부담 (
09-codec-hevc-h265.md). - Google YouTube는 연간 수십만 시간 콘텐츠를 처리 — H.264 대비 30% 절감만 해도 조 단위 대역폭 절약.
- 완전 royalty-free인 자체 코덱이 필요했다.
→ VP9은 YouTube의 비용 구조를 위해 태어났고, 그 결과 Chrome 생태계에 강하게 묶였다.
How — H.264·HEVC와의 차이
기술적 위치
| H.264 | VP9 | HEVC | AV1 | |
|---|---|---|---|---|
| 발표 | 2003 | 2013 | 2013 | 2018 |
| 기본 블록 | 16×16 macroblock | 64×64 superblock | 64×64 CTU | 128×128 superblock |
| Intra 모드 | 9 | 10 | 33 | 56 |
| 비트심도 | 8 (High10/12 별도) | 8/10/12 (Profile) | 8/10/12 | 8/10/12 |
| 라이선스 | MPEG LA | royalty-free | 3-pool | royalty-free (AOM) |
압축 효율 (vs H.264)
| 콘텐츠 | VP9 절감 | HEVC 절감 |
|---|---|---|
| 1080p 일반 | 30% | 35~40% |
| 4K | 35% | 45% |
| 애니메이션 | 40% | 50% |
→ VP9 ≈ HEVC. 라이선스만 빼면 거의 동급. AV1이 두 코덱 모두를 추가 25~30% 앞섬.
Profile
| Profile | 비트심도 | 서브샘플 | 사용처 |
|---|---|---|---|
| Profile 0 | 8 | 4:2:0 | 표준 |
| Profile 1 | 8 | 4:2:2 / 4:4:4 | 그래픽 |
| Profile 2 | 10 / 12 | 4:2:0 | HDR ★ |
| Profile 3 | 10 / 12 | 4:2:2 / 4:4:4 | HDR + WCG |
→ YouTube는 Profile 2 (10-bit 4:2:0 BT.2020)로 모든 HDR 콘텐츠 통합.
What — 사양·명령어
MIME / codecs
video/webm; codecs="vp9"
video/webm; codecs="vp9,opus"
video/mp4; codecs="vp09.00.10.08" ← Profile 0, Level 1.0, 8bit
video/mp4; codecs="vp09.02.10.10.01.09.16.09.01" ← Profile 2, 10bit, BT.2020 PQvp09.PP.LL.DD.CC.MM.TT.RR.RR 구조:
- PP: profile (00~03)
- LL: level (10·11·20·21·30·…·61·62)
- DD: bit depth (08·10·12)
- CC: chroma subsampling
- MM: matrix coefficient
- TT: transfer characteristic
- RR: video full range flag
Level
| Level | 최대 해상도@fps | 최대 비트레이트 |
|---|---|---|
| 1.0 | 240p@30 | 200 kbps |
| 2.0 | 352p@30 | 800 kbps |
| 3.0 | 720p@30 | 5 Mbps |
| 4.0 | 1080p@30 | 12 Mbps |
| 4.1 | 1080p@60 | 20 Mbps |
| 5.0 | 4K@30 | 50 Mbps |
| 5.1 | 4K@60 | 100 Mbps |
| 6.0 | 8K@30 | 160 Mbps |
| 6.1 | 8K@60 | 240 Mbps |
ffmpeg VP9 인코딩
# 표준 1080p VP9
ffmpeg -i in.mov \
-c:v libvpx-vp9 -crf 30 -b:v 0 \
-pass 1 -an -f webm /dev/null
ffmpeg -i in.mov \
-c:v libvpx-vp9 -crf 30 -b:v 0 \
-pass 2 -c:a libopus -b:a 96k \
-movflags +faststart \
out.webm
# 4K HDR10 VP9 (Profile 2)
ffmpeg -i hdr.mov \
-c:v libvpx-vp9 -profile:v 2 \
-crf 24 -b:v 0 \
-pix_fmt yuv420p10le \
-color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc \
out_hdr.webm
# 멀티 ladder 인코딩 (속도 개선: --row-mt, --tile-columns)
ffmpeg -i in.mov \
-c:v libvpx-vp9 -row-mt 1 -tile-columns 2 \
-threads 8 -speed 2 -crf 30 -b:v 0 \
out.webm
# MP4에 VP9 (덜 일반적, WebM이 표준)
ffmpeg -i in.mov \
-c:v libvpx-vp9 -crf 30 -b:v 0 \
-c:a aac -b:a 128k \
out.mp4libvpx-vp9 speed (preset)
speed 0~5 (에서 0이 가장 좋은 품질, 5가 가장 빠름)
- speed 0: 최고 효율, 매우 느림
- speed 1: 권장 offline (Netflix/YouTube 권장)
- speed 2~3: 실용적 균형
- speed 4~5: 라이브→ libvpx-vp9 speed 1이 default offline 권장. 단, 매우 느림.
컨테이너 — WebM
VP9의 자연스러운 컨테이너는 WebM (MKV의 Web 친화 부분집합).
| 특징 | WebM |
|---|---|
| 기반 | EBML (MKV 부분집합) |
| 비디오 | VP8 / VP9 / AV1 |
| 오디오 | Vorbis / Opus |
| 자막 | WebVTT |
| DRM | EME (Widevine) |
→ MP4에 VP9도 가능하지만, iOS Safari는 MP4+VP9도 안 받음. WebM은 Safari 14+에서 일부 지원.
What-if — 잘못 다루면 어떻게 깨지는가
❌ 함정 1 — iOS Safari에 VP9 단독 송출
iOS는 VP9 HW 디코더 없음. Safari 14+ (iOS 14, 2020)부터 SW 디코딩으로 일부 1080p 가능. MP4 H.264/HEVC 폴백 필수.
❌ 함정 2 — libvpx-vp9 default로 라이브 인코딩
libvpx-vp9은 offline 인코더 — 라이브에는 너무 느림. 라이브는 HW NVENC VP9 (RTX 30+) 또는 AV1, 아니면 H.264로 라이브.
❌ 함정 3 — VP9 + MP4 구조 가정
video/mp4; codecs="vp09..." 는 표준이지만 대부분의 디코더가 WebM에서만 VP9를 받음.
WebM이 사실상 표준.
❌ 함정 4 — AV1 시대에 VP9를 추가 ladder로
ABR ladder에 AV1 + VP9 + HEVC + H.264 모두 넣으면 인코딩 비용 4×. 보통 AV1 + H.264 또는 HEVC + H.264 두 ladder가 실용적. VP9는 YouTube의 인프라가 이미 박혀있는 곳에서만 의미.
❌ 함정 5 — color metadata 누락
VP9 Profile 2 (10bit HDR)는 transfer/primaries/matrix 메타가 필수. ffmpeg는 default로 박지 않으니 명시:
-color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020ncInsight — 흥미로운 이야기
“YouTube가 VP9를 만들었다”
Google이 On2를 인수한 가장 큰 이유는 YouTube의 비용 절감. 인수 직후 VP8을 오픈하고, VP9를 만들고, Chrome에 디코더를 강제 통합. 결과: 2014년 1080p+ YouTube의 80%+가 VP9으로 송출. 광고가 없는 트래픽까지 책임지는 internal cost optimization codec. → “코덱은 표준이 아니라 비용 절감 도구” 의 가장 명확한 예시.
“VP9의 patent 안전성은 검증된 적 없다”
Google은 VP9이 어떤 patent도 침해하지 않는다고 주장하지만, 법정에서 검증된 적은 없음. 일부 회사(Sisvel·Velos)가 VP9 patent pool을 만들어 라이선스를 시도했지만 광범위 채택은 실패. → AV1이 defensive patent pool을 만든 이유 — VP9의 학습.
“HDR는 VP9이 먼저였다”
2016년 YouTube HDR launch 시점, AV1은 아직 없었고 HEVC HDR은 Apple iOS만. Web에서 첫 HDR 송출은 VP9 Profile 2. PQ·HLG 모두 지원. YouTube는 모든 HDR 콘텐츠를 VP9 Profile 2로 정규화. 2024년부터 AV1로 단계적 전환 중이지만 VP9 HDR 라이브러리는 여전히 거대.
“AV1으로 가는 다리”
VP9의 코드베이스(libvpx)는 AV1 reference encoder(libaom)의 직접 조상. AV1의 superblock·intra prediction·entropy coding 상당수가 VP9의 진화. VP9이 없었으면 AV1도 없었다.
“VP9 디코더가 가장 많이 깔린 곳은 Smart TV”
Chromecast·Android TV·Roku·LG WebOS·Samsung Tizen의 default 비디오 디코더에 VP9 HW 가속이 박혀있다. 2015
2022년 출시된 거의 모든 Smart TV가 VP9 디코더 보유. → AV1 시대에도 Smart TV legacy는 VP9이 510년 더 살아남을 가능성.
요약 + Mermaid
VP9은 Google이 HEVC 라이선스를 회피하기 위해 만들었고 YouTube를 통해 사실상 표준이 됐다. 효율은 HEVC와 비슷, AV1보다는 낮음. WebM 컨테이너에 담겨 Chrome·Smart TV·Android에 뿌리내림. 2025년 시점은 AV1으로의 전환기 — VP9는 점진 폐지 단계지만 Smart TV legacy로 5~10년 더 살아남는다.