VOD 的推荐设置
用途
本部分针对基于文件的编码(即未直播)提供 VP9 编码设置建议。
这些建议旨在实现以下目标:
- 在质量和编码速度之间取得平衡
- 实现合理质量的最低比特率
- 可适应各种内容类型的设置
这些建议不会:
- 地址动态编码
- 针对特定内容类型(例如高动态度体育视频片段)进行优化
- 根据具体设备或网络要求配置设置
单分辨率编码
VP9 支持一系列从较小分辨率到 4K 的帧大小。帧尺寸越大,画质越高,但所需的带宽和传输处理能力也会越高。
如果您要创建单一分辨率,640x480 在各种网页和移动设备上都比较安全。以下 FFmpeg 命令行参数允许您创建 750kbps 的单分辨率文件。
-vf scale=640x480 -b:v 750k -quality good -speed 0 -crf 33 \
-c:v libvpx-vp9 -c:a libopus output.webm
多分辨率编码
如果您计划定位多个分辨率,或者您的传送网络具有不同的带宽,建议您创建多个分辨率。然后,您的播放器便可以控制向观看者发送哪种分辨率的图像。
多分辨率视频编码常用于自适应比特率流式传输,在这种视频流中,视频播放器会根据用户的带宽在分辨率之间实时切换。例如,Shaka 播放器允许您播放多分辨率编码,其中每个 VP9 编码位于一个单独的文件中,而 DASH 清单提供有关每个编码的信息。
如需详细了解如何以自适应流式传输格式打包视频,请参阅 Shaka 打包器。本指南将重点介绍适用于多种分辨率的 VP9 编码设置。
推荐的设置
以下所有设置均可用于不同分辨率的单个文件,两者一起提供适合自适应流式传输的综合集。请注意,640x480 版本有两个版本,一个低质量 (LQ),另一个中等质量 (MQ)。
比特率
在对 VP9 文件进行编码以按需观看时,建议使用受限质量 (CQ) 模式。这种编码模式可让您指定目标平均比特率,同时控制视频的最高质量和最小和最大比特率。
建议将以下比特率作为网络和移动分发的基准。这些建议可将比特率控制在最低水平,以便确保视频质量适合消费者网站和移动分发;您可将这些建议视为仍可实现合理质量的“低”比特率建议。
对于上述示例,建议将最低比特率设为目标比特率的 50%,最大比特率设为目标值的 145%。
帧大小/帧速率 | 目标比特率(VOD、kbps) | 最小比特率 (50%) | 最大比特率 (145%) |
---|---|---|---|
320x240p @ 24,25,30 | 150 | 75 | “打开地图并查看您的位置” |
640x360p @ 24,25,30 | 276 | 138 | 400 |
640x480p,24,25,30 | 512 (LQ)、750 (MQ) | 256 (LQ) 375 (MQ) | 742 (LQ) 1088 (MQ) |
1280x720p @ 24,25,30 | 1024 | 512 | 1485 |
1280x720p @ 50.60 | 1800 | 900 | 2610 |
1920x1080p @ 24、25,30 | 1800 | 900 | 2610 |
1920x1080p @ 50.60 | 3000 | 1500 | 4350 |
2560x1440p @ 24、25、30 | 6000 | 3000 | 8700 |
2560x1440p @ 50.60 | 9000 | 4500 | 13050 |
3840x2160p @ 24,25,30 | 12000 | 6000 | 17400 |
3840x2160p @ 50.60 | 18000 | 9000 | 26100 |
在 FFmpeg 中,比特率由以下命令控制:
FFMPeg | |
---|---|
-b:v <arg> |
设置比特率(例如 500k) |
-minrate <arg> -maxrate <arg> |
设置最小和最大比特率。 |
例如,对 640x480 内容进行编码时,您可以使用命令行 -b:v 750k -minrate 375 -maxrate 1088
。
质量
在 CQ 模式下,您还可以设置最高质量级别。对于文件级 VP9 编码,建议具有以下质量级别:
帧高度 | 目标质量 (CQ) |
---|---|
240 | 37 |
360 | 36 |
480 | 34 (LQ) 或 33 (MQ) |
720 | 32 |
1080 | 31 |
1440 | 24 |
2160 | 15 |
在 FFmpeg 中,质量是使用 -crf
命令设置的。例如,要将画质设为 33,您可以使用命令 -crf 33
多通编码和编码速度
使用文件级编码可以灵活地提高速度。您还可以对同一材质执行多次遍历以提高质量,并为每种材质选择速度。
在 FFmpeg 中编码 VP9 文件时,建议将 -quality
参数设置为 good
,然后使用 -speed
参数根据下表设置第一次和第二次遍历的速度。这样可以在编码时间和输出质量之间取得很好的平衡。
帧高度 | 速度(首次通过) | 速度(第二次通行证) |
---|---|---|
240 | 4 | 1 |
360 | 4 | 1 |
480 | 4 | 1 |
720 | 4 | 2 |
1080 | 4 | 2 |
1440 | 4 | 2 |
2160 | 4 | 2 |
例如,FFmpeg 中的首次编码编码字符串可能包含 -quality good -speed 4
。
关键帧间距
建议允许在关键帧之间最多有 240 帧的视频(对于 30fps 的内容,则为 8 秒)。关键帧是自给自足的视频帧;它们不依赖任何其他帧来呈现,但往往比其他帧类型大。对于网页和移动设备播放,在关键帧之间留出足够的间距,可让编码器选择关键帧的最佳位置,从而最大限度地提升画质。
在 FFmpeg 中,关键帧间距使用 -g
命令控制,指示帧数。对于 240 帧,则为 -g 240
。
平铺和线程处理建议
平铺操作会将视频帧拆分为多个列,这略微降低画质,但会加快编码性能。图块必须至少为 256 像素,因此可使用的图块数量有限制。
根据图块数量和输出帧的分辨率,更多的 CPU 线程可能很有用。一般来说,当输出帧非常小时,多个线程的值有限。
建议使用以下设置来平铺和处理不同分辨率下的线程。
帧大小 | 并列列数 | 线程数 |
---|---|---|
320x240 | 1(-tile-columns 0 ) |
2 |
640x360 | 2(-tile-columns 1 ) |
4 |
640x480 | 2(-tile-columns 1 ) |
4 |
1280x720 | 4(-tile-columns 2 ) |
8 |
1920x1080 | 4(-tile-columns 2 ) |
8 |
2560x1440 | 8 (-tile-columns 3 ) |
16 |
3840x2160 | 8 (-tile-columns 3 ) |
16 |
在 FFmpeg 中,图块数由 -tile-columns
参数和 -threads
的线程数控制。例如,640x480 编码会使用命令行 -tile-columns 2 -threads 4
。
FFmpeg 命令行
综合上述建议,可以使用以下 FFmpeg 命令对 VP9 内容进行编码。
请注意,第一个传递命令和第二个传递命令链接在一起。当 FFmpeg 请求使用输出视频覆盖第一项统计信息文件时,第二步命令中的 -y
参数答案为“是”。
另请注意,1080p 来源用于定位最高 1280x720 输出的编码。4K 源用于较大的输出。
320x240(24、25 或 30 帧/秒)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \ -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 2 \ -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \ -pass 1 -speed 4 tos-320x240.webm && \ ffmpeg -i tears_of_steel_1080p.webm -vf scale=320x240 -b:v 150k \ -minrate 75k -maxrate 218k -tile-columns 0 -g 240 -threads 2 \ -quality good -crf 37 -c:v libvpx-vp9 -c:a libopus \ -pass 2 -speed 1 -y tos-320x240.webm
- 输入文件:tears_of_steel_1080p.webm(1920x800,544.88 MB)
- 输出文件:tos-320x240.webm(320x240,21.73 MB)
640x360(每秒 24 帧、25 帧或 30 帧)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
-minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x360 -b:v 276k \
-minrate 138k -maxrate 400k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 36 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x360.webm
- 输入文件:tears_of_steel_1080p.webm(1920x800,544.88 MB)
- 输出文件:tos-640x360.webm(640x360,31.53 MB)
640x480(低画质,24、25 或 30 帧/秒)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
-minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360-low.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 512k \
-minrate 256k -maxrate 742k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 34 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x480-low.webm
- 输入文件:tears_of_steel_1080p.webm(1920x800,544.88 MB)
- 输出文件:tos-640x480-low.webm(640x480,51.18 MB)
640x480(中等质量,24、25 或 30 帧/秒)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
-minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-640x360-medium.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -b:v 750k \
-minrate 375k -maxrate 1088k -tile-columns 1 -g 240 -threads 4 \
-quality good -crf 33 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-640x480-medium.webm
- 输入文件:tears_of_steel_1080p.webm(1920x800,544.88 MB)
- 输出文件:tos-640x480-medium.webm(640x480,69.27 MB)
1280x720(每秒 24 帧、25 帧或 30 帧)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
-minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1280x720-24-30fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1024k \
-minrate 512k -maxrate 1485k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1280x720-24-30fps.webm
- 输入文件:tears_of_steel_1080p.webm(1920x800,544.88 MB)
- 输出文件:tos-1280x720-24-30fps.webm (1280x720,98.2 MB)
1280x720(每秒 50 或 60 帧)
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1280x720-50-60fps.webm && \
ffmpeg -i tears_of_steel_1080p.webm -vf scale=1280x720 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 32 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4-y tos-1280x720-50-60fps.webm
- 输入文件:tears_of_steel_1080p.webm(1920x800,544.88 MB)
- 输出文件:tos-1280x720-50-60fps.webm (1280x720,157.1 MB)
1920x1080(24、25 或 30 帧/秒)
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1920x1080-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 1800k \
-minrate 900k -maxrate 2610k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1920x1080-24-30fps.webm
- 输入文件:tearsofsteel_4k.mov(3840x1714,6.76 GB)
- 输出文件:tos-1920x1080-24-30fps.webm (1920x1080,151.51 MB)
1920x1080(每秒 50 或 60 帧)
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
-minrate 1500k -maxrate 4350k -tile-columns 2 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-1920x1080-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=1920x1080 -b:v 3000k \
-minrate 1500k -maxrate 4350k -tile-columns 3 -g 240 -threads 8 \
-quality good -crf 31 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-1920x1080-50-60fps.webm
- 输入文件:tearsofsteel_4k.mov(3840x1714,6.76 GB)
- 输出文件:tos-1920x1080-50-60fps.webm (1920x1080,238.18 MB)
2560x1440(24、25 或 30 帧/秒)
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
-minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-2560x1440-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 6000k \
-minrate 3000k -maxrate 8700k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-2560x1440-24-30fps.webm
- 输入文件:tearsofsteel_4k.mov(3840x1714,6.76 GB)
- 输出文件:tos-2560x1440-24-30fps.webm 2560x1440,533.54 MB)
2560x1440(每秒 50 或 60 帧)
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
-minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-2560x1440-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=2560x1440 -b:v 9000k \
-minrate 4500k -maxrate 13050k -tile-columns 3 -g 240 -threads 16 \
-quality good -crf 24 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-2560x1440-50-60fps.webm
- 输入文件:tearsofsteel_4k.mov(3840x1714,6.76 GB)
- 输出文件:tos-2560x1440-50-60fps.webm 2560x1440,664.04 MB)
3840x2160(24、25 或 30 帧/秒)
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
-minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 24 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-3840x2160-24-30fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 12000k \
-minrate 6000k -maxrate 17400k -tile-columns 3 -g 240 -threads 24 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -speed 4 -y tos-3840x2160-24-30fps.webm
- 输入文件:tearsofsteel_4k.mov(3840x1714,6.76 GB)
- 输出文件:tos-3840x2160-24-30fps.webm 3840x2160, 1.03 GB)
3840x2160(每秒 50 或 60 帧)
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
-minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 24 \
-quality good -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 1 -speed 4 tos-3840x2160-50-60fps.webm && \
ffmpeg -i tearsofsteel_4k.mov -vf scale=3840x2160 -b:v 18000k \
-minrate 9000k -maxrate 26100k -tile-columns 3 -g 240 -threads 24 \
-quality good -speed 4 -crf 15 -c:v libvpx-vp9 -c:a libopus \
-pass 2 -y tos-3840x2160-50-60fps.webm
- 输入文件:tearsofsteel_4k.mov(3840x1714,6.76 GB)
- 输出文件:tos-3840x2160-50-60fps.webm 3840x2160, 1.56 GB)