基本编码
视频压缩基础知识
本部分介绍了 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 被认为是适用于各种移动设备和网络设备的安全分辨率。
比特率(码率)
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 中的视频点播内容,其中 0 为最高质量,4 为最低质量。Realtime 的有效值为 5-8 ;数值越低,质量越高 |
-tile-columns |
平铺将视频拆分为矩形区域,从而实现多线程编码和解码。图块数量始终为 2 的幂。0 =1 个图块,1 =2,2 =4,3 =8,4 =16,5 =32。 |
以下 FFmpeg 命令将创建一个 640x480 文件,并将质量设置为“良好”,速度设置为 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
您可选择的画质和速度设置可能会因分辨率和可用的处理能力而异。您可以在下一部分中找到完整的建议集。