기본 인코딩
동영상 압축의 기본사항
이 섹션에서는 프레임 크기, 기본 비트 전송률 제어 및 품질을 비롯한 VP9 인코딩의 기본 옵션을 다룹니다.
동영상 압축이 처음이라면 이 동영상에서 동영상 압축의 필요성과 작동 방식을 자세히 알아보세요.
간단한 인코딩
다음 FFmpeg 명령어는 입력 파일을 Opus Audio가 있는 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는 사용하는 출력 파일 이름에서 만들 파일의 유형을 추론합니다. 이 예에서는 FFmpeg가 output.webm
를 요청했기 때문에 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은 여러 가지 비트 전송률 모드를 지원합니다.
모드 | |
---|---|
Constant Quantizer (Q) | 고정된 퀀타이저 값을 지정할 수 있습니다. 비트 전송률은 경우에 따라 다릅니다. |
제한된 품질 (CQ) | 최고 품질 수준을 설정할 수 있습니다. 화질은 비트 전송률 매개변수 내에서 다를 수 있습니다. |
가변 비트 전송률 (VBR) | 비트 전송률에 대한 제약조건 내에서 시간 경과에 따라 품질과 비트 전송률의 균형을 맞춥니다. |
상수 비트 전송률 (CBR) | 품질이 다양한 상태에서 비트 전송률을 일정하게 유지하기 위해 시도합니다. |
파일 기반 동영상 (실시간 스트리밍 아님)에는 CQ 모드가 권장됩니다. 다음 FFmpeg 명령줄 매개변수는 CQ 모드에 사용됩니다.
FFmpeg | |
---|---|
-b:v <arg> |
타겟 비트 전송률 (예: 500k)을 설정합니다. |
-minrate <arg> -maxrate <arg> |
최소 비트 전송률 및 최대 비트 전송률을 설정합니다. |
-crf <arg> |
최대 품질 수준을 설정합니다. 유효한 값은 0~63이며, 숫자가 작을수록 품질이 높습니다. |
예를 들어, 다음 FFmpeg 명령어는 CQ 모드를 사용하여 중간 품질의 640x480 동영상 파일을 만들며, 평균 비트 전송률은 750kbps와 최대 화질은 33으로 제한됩니다.
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은 품질과 속도 간의 균형을 유지하기 위한 여러 가지 설정을 제공합니다.
화질 설정은 인코더가 동영상을 압축하는 데 필요한 접근 방식을 지정합니다. 실시간, 양호, 실시간 모드를 사용할 수 있습니다.
스레딩 설정을 통해 인코더가 여러 CPU 스레드를 사용하여 동영상을 인코딩할 수 있습니다. 이러한 설정은 품질을 약간 저하시킬 수 있지만 인코딩 및 디코딩 속도를 크게 향상할 수 있습니다.
이러한 두 가지 유형의 설정은 여러 명령줄 매개변수에 의해 제어됩니다.
FFmpeg | |
---|---|
-threads |
인코딩 중에 사용할 스레드 수를 나타냅니다. |
-quality |
good , best 또는 realtime 로 설정할 수 있음 |
-speed |
이 매개변수는 품질이 good 로 설정되는지 또는 realtime 으로 설정되었는지에 따라 의미가 다릅니다. 속도 설정 0-4 은 good 및 best 의 VoD에 적용되며 0 의 품질이 가장 높고 4 는 가장 낮습니다. Realtime 유효한 값은 5-8 이며, 숫자가 작을수록 품질이 높습니다. |
-tile-columns |
Tail을 사용하면 동영상을 직사각형 영역으로 분할하여 인코딩과 디코딩을 멀티스레딩할 수 있습니다. 타일 수는 항상 2의 제곱입니다. 0 = 타일 1개, 1 =2, 2 =4, 3 =8, 4 =16, 5 =32 |
다음 FFmpeg 명령어를 사용하면 화질이 '##39;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
화질과 속도 설정 선택 항목은 해상도와 사용 가능한 처리 성능에 따라 달라질 수 있습니다. 다음 섹션에서 전체 권장사항을 확인할 수 있습니다.