기본 인코딩

동영상 압축 기본사항

이 섹션에서는 프레임 크기, 기본 비트 전송률 제어, 품질 등 VP9 인코딩의 기본 옵션을 다룹니다.

동영상 압축을 처음 사용하는 경우 이 동영상을 시청하여 동영상 압축의 필요성과 작동 방식을 자세히 알아보세요.

간단한 인코딩

다음 FFmpeg 명령어는 입력 파일을 Opus 오디오가 포함된 VP9 동영상으로 변환합니다. 이는 기본 설정을 사용하는 가장 간단한 인코딩입니다.

ffmpeg -i tears_of_steel_1080p.webm -c:v libvpx-vp9 -c:a libopus output.webm

이 FFmpeg 인코딩은 다음 명령줄 매개변수를 사용합니다.

FFmpeg
-i <filename> 입력 파일 이름을 지정합니다.
-c:v libvpx-vp9 FFmpeg에 VP9 동영상을 만들라고 지시합니다.
-c:a libopus FFmpeg에 Opus 오디오를 만들도록 지시
output.webm 출력 파일 이름을 지정합니다.

FFmpeg는 사용하는 출력 파일 이름에서 만들 파일의 유형을 추론합니다. 이 예에서는 output.webm를 요청했으므로 FFmpeg가 WebM 파일을 출력합니다.

해상도

모든 동영상에는 프레임 크기 (픽셀 너비와 높이를 나타냄)가 있습니다. 다음 FFmpeg 명령줄 매개변수를 사용하여 VP9 인코딩의 출력 동영상 프레임 크기를 제어할 수 있습니다.

FFmpeg
-vf scale=<width>x<height> 프레임 너비 및 높이

예를 들어 다음 FFmpeg 명령어는 640x480 VP9 WebM 동영상을 출력합니다.

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -c:v libvpx-vp9 -c:a libopus output.webm

해상도가 작을수록 품질이 낮아지지만 해상도가 클수록 대역폭이 더 많이 필요하고 디코딩하는 데 더 많은 처리 능력이 필요하며 오래된 기기에서는 지원되지 않을 수 있습니다. VP9의 경우 640x480이 다양한 모바일 및 웹 기기에 적합한 해상도로 간주됩니다.

비트 전송률

VP9는 다음과 같은 여러 비트 전송률 모드를 지원합니다.

모드
상수 양자화기 (Q) 고정 양자화기 값을 지정할 수 있습니다. 비트 전송률은 달라집니다.
제한된 품질 (CQ) 최대 품질 수준을 설정할 수 있습니다. 비트 전송률 매개변수 내에서 품질이 다를 수 있음
가변 비트 전송률 (VBR) 비트 전송률 제약 조건 내에서 시간 경과에 따른 품질과 비트 전송률의 균형을 유지합니다.
고정 비트 전송률 (CBR) 품질이 달라지는 동안 비트 전송률을 비교적 일정하게 유지하려고 시도합니다.

CQ 모드는 라이브 스트리밍이 아닌 파일 기반 동영상에 권장됩니다. CQ 모드에는 다음 FFmpeg 명령줄 매개변수가 사용됩니다.

FFmpeg
-b:v <arg> 타겟 비트 전송률을 설정합니다 (예: 500k).
-minrate <arg>
-maxrate <arg>
최소 및 최대 비트 전송률을 설정합니다.
-crf <arg> 최대 품질 수준을 설정합니다. 유효한 값은 0~63이며, 숫자가 낮을수록 품질이 높습니다.

예를 들어 다음 FFmpeg 명령어는 CQ 모드를 사용하여 평균 비트 전송률이 750kbps이고 최대 품질이 33으로 제한된 중간 품질의 640x480 동영상 파일을 만듭니다.

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -b:v 750k -crf 33 -c:v libvpx-vp9 -c:a libopus output.webm

비트 전송률은 원하는 화질과 동영상 해상도에 따라 달라집니다. 다양한 해상도의 비트 전송률에 관한 전체 권장사항은 여기에서 확인할 수 있습니다.

품질 및 속도 설정

동영상 압축은 출력의 품질과 생성에 걸리는 시간 간의 절충입니다. 일반적으로 인코딩 시간을 늘리면 항상 더 높은 품질을 얻을 수 있지만 가능한 최고 품질을 얻는 데 필요한 시간이 비실용적일 수 있습니다.

VP9는 품질과 속도의 균형을 맞추기 위한 여러 설정을 제공합니다.

  • 품질 설정은 동영상을 압축하는 데 사용하는 접근 방식을 인코더에 알려줍니다. 사용 가능한 모드는 best, good, realtime입니다.

  • 스레딩 설정을 사용하면 인코더가 여러 CPU 스레드를 사용하여 동영상을 인코딩할 수 있습니다. 이러한 설정은 품질을 약간 저하시킬 수 있지만 인코딩 및 디코딩 속도를 크게 개선할 수 있습니다.

이 두 가지 유형의 설정은 여러 명령줄 매개변수로 제어됩니다.

FFmpeg
-threads 인코딩 중에 사용할 스레드 수를 나타냅니다.
-quality good, best 또는 realtime로 설정할 수 있습니다.
-speed 이 매개변수는 품질이 good로 설정되었는지 아니면 realtime로 설정되었는지에 따라 의미가 다릅니다. 속도 설정 0-4goodbest의 VOD에 적용되며, 0이 가장 높은 품질이고 4이 가장 낮은 품질입니다. Realtime 유효한 값은 5-8입니다. 숫자가 낮을수록 품질이 높습니다.
-tile-columns 타일링은 동영상을 직사각형 영역으로 분할하여 인코딩 및 디코딩을 위한 멀티 스레딩을 지원합니다. 타일 수는 항상 2의 거듭제곱입니다. 0=1 타일, 1=2, 2=4, 3=8, 4=16, 5=32

다음 FFmpeg 명령어는 품질이 'good'으로 설정되고 속도가 0 (고품질)으로 설정된 640x480 파일을 만듭니다.

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 \
  -b:v 750k -quality good -speed 0 -crf 33 -c:v libvpx-vp9 -c:a libopus \
  output.webm

품질 및 속도 설정은 해상도와 사용 가능한 처리 능력에 따라 달라질 수 있습니다. 전체 권장사항은 다음 섹션에서 확인할 수 있습니다.