기본 인코딩
동영상 압축 기본사항
이 섹션에서는 프레임 크기, 기본 비트 전송률 제어, 품질 등 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-4 은 good 및 best 의 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
품질 및 속도 설정은 해상도와 사용 가능한 처리 능력에 따라 달라질 수 있습니다. 전체 권장사항은 다음 섹션에서 확인할 수 있습니다.