基本编码
视频压缩基础知识
本部分将介绍 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 会根据您使用的输出文件名推断出要创建的文件类型。在此示例中,FFmpeg 将输出 WebM 文件,因为我们请求了 output.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 被视为在众多移动设备和 Web 设备上都能使用的安全分辨率。
比特率(比特率)
VP9 支持多种不同的比特率模式:
模式 | |
---|---|
常量量子 (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 |
平铺操作会将视频拆分为矩形区域,以支持多线程编码和解码。平铺图片数量始终是 2 的幂。0 =1 个图块,1 =2,2 =4,3 =8,4 =16,5 =32。 |
以下 FFmpeg 命令将创建一个 640x480 的文件,画质设为 'good' 且速度设置为 0(高画质):
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
您选择的画质和速度设置可能会因分辨率和可用处理能力而异。您可以在下一部分找到全套建议。