이 섹션에는 다양한 일반 프로필에 대한 VP9 인코딩 권장사항이 나열되어 있습니다.

  • 웹 및 모바일용으로 고도로 최적화된 동영상 (VOD)
  • 프리미엄 콘텐츠 배포 (VOD)
  • 스포츠, 애니메이션, 10비트 콘텐츠 (VOD)
  • 실시간 인코딩
  • WebRTC

소개

동영상을 인코딩할 때는 다음과 같은 사항을 고려해야 합니다.

  • 미디어 버전을 하나만 만들고 있나요, 아니면 서로 다른 비트 전송률과 해상도로 여러 버전을 만들고 있나요?
  • 라이브 동영상 스트림을 만들고 있나요, 아니면 주문형 동영상 파일을 만들고 있나요?
  • 인코딩하는 미디어 유형은 무엇인가요? 움직임이 많은가요? 세부정보 애니메이션?
  • 최고 품질 (예: 프리미엄 콘텐츠) 또는 속도 (예: 웹 회의)를 위해 인코딩하고 있나요?

이 섹션은 기본 주문형 동영상 파일의 설정으로 시작한 다음 이러한 모든 질문에 대한 권장사항을 제시합니다.

기본 설정

인코딩 비트 전송률

다음 비트 전송률은 웹 및 모바일 배포의 기준으로 제안됩니다. 이러한 제안은 소비자 웹 및 모바일 배포에 적합한 동영상 품질을 달성하면서 비트 전송률을 최소화합니다. 적절한 품질을 달성할 수 있는 '낮은' 비트 전송률 권장사항으로 생각하면 됩니다.

추천 타겟 비트 전송률

프레임 크기/속도 평균 비트 전송률 (VOD, kbps) 평균 비트 전송률 (라이브, kbps)
320x240p @ 24,25,30 150 250
640x360p @ 24,25,30 276 386
640x480p @ 24,25,30 512 (LQ), 750 (MQ) 720 (LQ), 1024 (MQ)
1280x720p @ 24,25,30 1024 1440
1280x720p @ 50,60 1800 2500
1920x1080p @ 24,25,30 1800 2500
1920x1080p @ 50,60 3000 4200
2560x1440p @ 24,25,30 6000 8400
2560x1440p @ 50,60 9,000 12600
3840x2160p @ 24,25,30 12000 16800
3840x2160p @ 50,60 18000 25200

그림 2a: 타겟 비트 전송률

VOD 인코딩 설정

대부분의 콘텐츠 유형 설정

대부분의 콘텐츠 유형의 경우 비트 전송률 제한이 있는 제한된 품질 (CQ) 모드를 사용하는 것이 좋습니다. 대부분의 동영상에는 움직임이 많은 장면 (예: 액션 시퀀스)과 세부정보가 적은 장면 (예: 대화)이 혼합되어 있습니다. CQ 모드를 사용하면 인코더가 더 길고 쉬운 장면에서 비트를 낭비하지 않고 적절한 품질 수준을 유지하면서 어려운 시퀀스에 더 많은 비트를 할당할 수 있습니다.

아래 차트에 표시된 품질 값을 사용하여 타겟의 50% ~150% 의 비트 전송률 범위를 허용하는 것도 좋습니다. 이 모드에는 2패스 인코딩이 필요하며 아래에 표시된 대로 HD 이상의 경우 더 빠른 설정을 사용하는 것이 좋습니다.

CQ 인코딩을 위한 인코더 설정

프레임 높이 타겟 품질 (CQ) 인코딩 모드
240 37 TWO_PASS_MEDIUM
360 36 TWO_PASS_MEDIUM
480 34 (품질 낮음) 또는 33 (품질 중간) TWO_PASS_MEDIUM
720 32 TWO_PASS_FAST
1080 31 TWO_PASS_FAST
1440 24 TWO_PASS_FAST
2160 15 TWO_PASS_FAST

그림 2b: CQ 권장 설정

마지막으로 키프레임 사이의 동영상 프레임은 240개 (30fps 콘텐츠의 경우 8초)로 권장합니다. 키프레임은 자체적으로 충분한 동영상 프레임입니다. 렌더링을 위해 다른 프레임에 의존하지 않습니다 (자세한 설명은 GOP 구조 참고). 웹 및 모바일 재생의 경우 인코더가 품질을 극대화하기 위해 키프레임의 '최적' 배치를 선택할 수 있도록 키프레임 간에 충분한 간격을 허용합니다.

명령줄 매개변수 예: 640x360 동영상

위에서 360p 동영상에 대한 권장사항은 다음과 같습니다.

  1. CQ 수준 36 (그림 2b 참고)
  2. 목표 비트 전송률 276kbps (그림 2a 참고)
  3. 허용되는 최소 비트 전송률은 138kbps (타겟의 50%)입니다.
  4. 허용되는 최대 전송률 414kbps (타겟의 150%)
  5. 최대 키프레임 간격 240초
  6. 2패스, 'Medium' 프로필

이렇게 하면 libvpx 및 FFmpeg에 다음 명령줄 매개변수가 제공됩니다.

libvpx

--end-usage=cq --cq-level=36 --target-bitrate=276 --minsection-pct=50 \
  --maxsection-pct=150 --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-crf 36 -b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

프리미엄 콘텐츠 설정

위의 예에서는 비교적 빠른 인코딩 설정을 사용하여 동영상 스트림을 효율적으로 만들었습니다. 하지만 일부 콘텐츠 (예: 프리미엄 영화)의 경우 인코딩 중에 시간을 더 투자하여 더 높은 품질의 출력을 얻는 것이 좋습니다.

프리미엄 콘텐츠의 경우 위와 동일한 설정을 사용하되, 인코더가 품질을 최적화하는 데 더 많은 시간을 할애하도록 지시하는 다른 사전 설정을 사용하는 것이 좋습니다.

고급 콘텐츠 인코딩 모드 및 명령줄 매개변수

프레임 높이 인코딩 모드 libvpx FFmpeg
240 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
360 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
480 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
720 TWO_PASS_SLOW --good --cpu-used 1 -good -speed 1
1080 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
1440 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
2160 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2

그림 2c: 프리미엄 콘텐츠 인코딩 모드

스포츠, 움직임이 많은 콘텐츠 설정

스포츠 콘텐츠에는 VBR 인코딩을 사용하는 것이 좋습니다. 스포츠는 높은 동작과 복잡성이 비교적 일관된 경향이 있으며 VBR을 사용하면 동작이 적은 기간 동안 QP 인코딩보다 높은 품질을 달성할 수 있습니다.

명령줄의 경우 QP 모드와 VBR 모드의 주요 차이점은 CQ 수준을 지정하지 않는다는 것입니다. 그 외에는 권장 설정이 동일합니다.

VBR 명령줄 매개변수 예: 640x360 동영상

libvpx

--end-usage=vbr --target-bitrate=276 --minsection-pct=50 --maxsection-pct=150 \
  --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

애니메이션 및 게임 설정

노이즈가 많은 / 품질이 낮은 콘텐츠 설정

노이즈가 많은 콘텐츠의 경우 alt-ref 프레임의 수와 강도를 늘리는 것이 좋습니다. 대체 참조 프레임은 사용자에게 표시되지 않는 '보이지 않는' 프레임이지만 최종 프레임을 만들 때 참조로 사용됩니다 (자세한 내용은 여기 참고).

VP9가 대체 참조 프레임을 더 많이 사용하도록 지시하려면 다음 매개변수를 사용하는 것이 좋습니다.

libvpx

--auto-alt-ref=1 --lag-in-frames-16 --arnr-maxframes=5 --arnr-strength=3

FFmpeg

10비트/HDR 인코딩

10비트 인코딩의 경우 VP9 Profile 2를 사용해야 합니다. 10비트 인코딩에는 더 많은 비트가 필요하지 않으므로 나머지 매개변수는 동일합니다.

libvpx

--profile=2

FFmpeg

-profile 2

라이브 인코딩 설정

실시간 스트리밍

라이브 인코딩은 일반적으로 CBR로 실행되므로 인코더가 품질을 최대화하는 기능이 제한됩니다. 따라서 그림 2a에 표시된 대로 더 높은 비트 전송률을 사용합니다.

실시간 인코딩의 경우 스레딩을 최대화하는 것도 중요합니다. 이는 다음과 같은 작업을 통해 실행됩니다.

  1. VP9가 동영상을 열로 분할하도록 허용합니다 (열은 너비가 256픽셀 이상이어야 하고 2의 거듭제곱이어야 함).
  2. VP9에 더 많은 CPU 전력을 사용하도록 지시합니다. 다음 표에는 해상도별 권장사항이 나와 있습니다.

타일링 및 스레딩 권장사항

CQ 인코딩을 위한 인코더 설정
프레임 크기 타일 열 수 스레드 수
320x240 1 2
640x360 2 4
640x480 2 4
1280x720 4 8
1920x1080 4 8
2560x1440 8 16
3840x2160 8 16

그림 2d. 라이브 인코딩에 권장되는 타일링 및 스레딩

라이브 인코딩은 성능을 보장하기 위해 기한을 '실시간'으로 설정하고 대체 참조 프레임이 미래를 살펴보지 않도록 지시합니다 (이렇게 하면 지연 시간이 발생함).

이를 바탕으로 라이브 360p 동영상에 대한 권장사항은 다음과 같습니다.

  1. CBR, 타겟 비트 전송률 386kbps (그림 2a 참고)
  2. 타일 열 2개 (그림 2d 참고)
  3. 4개의 스레드 (그림 2d 참고)
  4. 실시간 실적
  5. 대체 프레임으로 인한 지연 시간 없음 (프레임 지연 없음)

이렇게 하면 libvpx 및 FFmpeg에 다음 명령줄 매개변수가 제공됩니다.

libvpx

--end-usage=cbr --target-bitrate=386 --cpu-used=4 --tile-columns=2 --rt --lag-in-frames=0

FFmpeg

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -r 29.97 -b:v 386k \
  -minrate 386k -maxrate 386k -c:v libvpx-vp9 -c:a libopus output.webm

DASH/YouTube용 라이브 VP9 인코딩

WebRTC 인코딩