制作VP8视频

WebM项目致力于开发一种高质量的、开放的、可供所有人免费使用的网络视频格式。

WebM的编解码器VP8通过libvpx库安装在FFMPEG中,libvpx是一种开放、免版税的媒体文件格式。

虽然任何最新的FFMPEG存储库都应默认启用此选项,但可以借助编译指南,并通过使用–enable-libvpx选项编译FFmpeg,或者确保在Homebrew的安装公式中启用了libvpx选项,来安装libvpx库。

注意:VP8的继任者VP9在更低的比特率下提供了更好的视频质量。

在本章中,我们将探索用于制作可变比特率、恒定比特率和Alpha通道视频的命令。

可变比特率(默认)

ffmpeg -i INPUT -c:v libvpx -b:v 1M -c:a libvorbis OUTPUT.webm

libvpx默认提供可变比特率模式。

在此模式下,它将简单地尝试达到指定的平均比特率,例如1 MBit/s。这是“目标比特率”。如果想要更好的质量,请选择更高的比特率。

注意:不应省略-b:v选项,因为默认设置将产生质量平庸的输出。

使用CRF的可变比特率(推荐)

除了“默认”的可变比特率模式外,还有一种恒定质量模式,就像x264编解码器一样,该模式将确保每一帧都获得实现特定质量水平所需的比特数,而不是强制流具有平均比特率。这可以获得更好的整体质量,并且在使用VP8编码视频时,这应该是您的首选方法。在这种情况下,目标比特率变为允许的最大比特率。

您可以通过CRF参数启用恒定质量模式:

ffmpeg -i INPUT -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis OUTPUT.webm

默认情况下,CRF值的范围是4到63,10是一个良好的起点。值越低表示质量越好。23

重要提示:如果未设置-b:v或-crf,编解码器将使用较低的默认比特率,结果可能非常糟糕。务必提供其中一个选项,理想情况下是同时提供两个。

如果您想进一步调整质量,可以设置另外两个参数:

  • -qmin:最小量化器(默认值为4,范围是0到63)
  • -qmax:最大量化器(默认值为63,范围是从-qmin到63)。

“量化”是将连续范围的值转换为有限范围的离散值的过程。

这些“q值”是量化参数,一般来说,值越低表示“质量越好”。如果将范围设置为0到63,这意味着编解码器可以自由选择如何分配质量。为了获得更好的整体质量,您可以尝试将-qmin设置为0,将-qmax设置为50或更低。

例如:

ffmpeg -i INPUT -c:v libvpx -qmin 0 -qmax 50 -crf 5 -b:v 1M -c:a libvorbis OUTPUT.webm

如FFMPEG文档中所述:

“无需多言,这需要一些调整。如果在CRF模式下设置的最大比特率过低,或质量过高(即qmin、qmax或crf值过低),libvpx将“饱和”比特率,您最终将再次获得恒定比特率编码,这不是理想的结果。”

恒定比特率

与大多数其他编解码器一样,libvpx也提供了恒定比特率编码模式,该模式尝试以达到平均比特率的方式对视频进行编码。

这并不意味着每一帧都用相同数量的比特进行编码(因为这样会损害质量),但比特率会受到严格限制。

如果你需要你的视频文件具有特定的大小,或者如果你正在通过一个只允许特定比特率的渠道流式传输视频,那么你应该使用恒定比特率编码。

示例公式:
ffmpeg -i INPUT -c:v libvpx -minrate 1M -maxrate 1M -b:v 1M -c:a libvorbis OUTPUT.webm

当然,你可以选择不同于1M的其他比特率值,例如500K,但你必须将所有选项(即-minrate、-maxrate和-b:v)设置为相同的值。

Alpha 通道

VP8 支持 alpha 通道,您可以在以下网址http://simpl.info/videoalpha/通过 Google Chrome 或Firefox 浏览器查看。要使用 ffmpeg 从一系列 png 输入图像创建类似的视频:

ffmpeg -i %03d.png -c:v libvpx -pix_fmt yuva420p -metadata:s:v:0 alpha_mode="1" output.webm

要了解更多关于 VP8 编码参数的信息,请查阅 VP8 编码参数指南。

生成 VP9 视频

VP9 由谷歌于 2013 年创建并开发,是 h265 的直接竞争对手,主要用于其 YouTube 平台,并且是 VP8 编解码器的升级版。
要使用 FFMPEG 进行 VP9 编码,您将使用 libvpx-vp9,这是 WebM 的 VP9 视频编码器,WebM 是一种开放、免版税的媒体文件格式。VP9 的完整描述可在谷歌开发者 VP9 部分找到。
谷歌还提供了完整的 FFMPEG 命令和特别针对实时编码、视频点播场景以及 HDR 场景的建议设置。
与 h264 或 h265 编解码器类似,VP9 提供了不同的码率控制模式,这些模式决定了视频的质量和文件大小:
• 单次通过和两次通过平均码率
• 恒定质量
• 受限质量
• 两次通过恒定质量
• 恒定码率
• 无损

单次通过平均码率

在这个例子中,您只需设置所需的码率(2M),FFMPEG 将处理其余部分。
命令:ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 2M output.webm

两次通过平均码率(推荐)
如 FFMPEG 官方文档所述:“对于 libvpx-vp9,两次通过是推荐的编码方法,因为某些提高质量的编码器功能仅在两次通过模式下可用。”

使用 FFMPEG 生成 VP9 视频有两种不同的两次通过方法:一种是针对平均码率的目标码率方法,另一种是恒定质量方法。同样,如 FFMPEG 官方文档所述,第二种方法“在最终通过中使用更现代的 CRF 风格方法来实现一定的感知质量水平,同时通过进行第一次通过来获得上述压缩优势。”

对于两次通过,您需要运行两次 FFMPEG,设置几乎相同,但以下除外:
• 在第一次和第二次通过中,分别使用 -pass 1-pass 2 选项。
• 在第一次通过中,FFMPEG 将输出到空文件描述符,而不是实际文件。(这将生成一个日志文件,FFMPEG 在第二次通过时需要该文件)
• 在第一次通过中,您需要指定输出格式,使用 -f,该格式应与第二次通过中使用的输出格式匹配。
在第一次通过中,您可以通过指定 -an 来省略音频。(“无音频”选项。)

第一种方法:两次通过“目标码率模式”
示例公式:

ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 2M -pass 1 -an -f webm /dev/null && ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 2M -pass 2 -c:a libopus output.webm

第二种方法:两次通过“恒定质量”
两次通过恒定质量模式通过将 -b:v 设置为零,并使用 -crf 开关指定质量级别来调用:
示例公式:

ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -pass 1 -an -f webm /dev/null && ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 0 -crf 30 -pass 2 -c:a libopus output.webm

恒定质量

FFMPEG 的 VP9 还提供了恒定质量模式(CQ),这与 h264 编解码器中的 CRF 选项类似,该模式在仅使用单次通过的情况下,针对特定的感知质量级别。
如 FFMPEG 文档所述:“虽然使用这种单次通过模式会导致压缩效率较低,因为 libvpx 更倾向于两次通过编码,但如果第一次通过所需的额外时间和两次通过模式下用于更好压缩的额外 CPU 周期对于您的使用场景来说不值得,那么这种模式仍然可能有用。”

要触发此模式,您必须结合使用 -crf-b:v 0。请注意,-b:v 必须为 0。将其设置为任何更高的值或完全省略它,将会调用下面描述的受限质量模式。
示例公式:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm

CRF 值可以是 0–63。值越低表示质量越好。建议的值范围是 15–35,对于 1080p 高清视频,建议值为 31。

Google 推荐的两次通过视频点播设置
Google 的 VP9 开发者网站包含许多有用的信息和 FFMPEG 公式,以便为不同的场景生成 VP9 视频。

这些建议旨在实现以下目标:
• 在质量和编码速度之间取得平衡
• 实现合理质量所需的最小码率
• 适应广泛内容类型的设置

考虑到这些规格,对于 1080p 视频但使用更高码率的示例公式如下:

ffmpeg -i INPUT -b:v 3600k -minrate 1800k -maxrate 5220k -tile-columns 2 -g 240 -threads 8 -quality good -crf 27 -c:v libvpx-vp9 -map 0 -sn -c:a libopus -ac 2 -b:a 128k -pass 1 -speed 4 OUTPUT.webm && ffmpeg -i INPUT -b:v 3600k -minrate 1800k -maxrate 5220k -tile-columns 3 -g 240 -threads 8 -quality good -crf 27 -c:v libvpx-vp9 -map 0 -sn -c:a libopus -ac 2 -b:a 128k -pass 2 -speed 4 -y OUTPUT.webm

请参阅 Google 官方文档以了解更多关于此命令的信息,或查阅 WebM 视频点播推荐设置。

受限质量模式

使用受限质量方法,VP9 将确保达到恒定的(感知)质量,同时将码率保持在指定的上限以下或在一定范围内。虽然上面提到的单次通过编码的注意事项仍然适用,但此方法对于以一般一致的方式批量编码视频仍然很有用。

示例公式:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 2000k output.webm

质量由 -crf 选项决定,码率限制由 -b:v 决定,其中码率必须为非零值。

恒定码率模式

如 FFMPEG 文档所述:“与其他大多数编解码器一样,libvpx 也提供了恒定码率(CBR)编码模式,该模式尝试以达到平均码率的方式对视频进行编码。这并不意味着每一帧都用相同数量的比特进行编码(因为这样会损害质量),但码率会受到严格限制。如果您需要视频文件具有特定大小,或者如果您正在通过仅允许特定码率的信道流式传输视频,则应使用恒定码率编码。不过,通常情况下,在这种情况下,建议使用受限质量选项。”

示例公式:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -minrate 1M -maxrate 1M -b:v 1M output.webm

在此,您可以选择除 1M 以外的其他码率值,例如 500K,但您必须将所有选项(即 -minrate-maxrate-b:v)设置为相同的值。

无损模式
libvpx-vp9 具有无损编码模式,可以通过使用选项 -lossless 1 来激活:

有关 FFMPEG 使用 VP9 的更多信息和详细信息,请参阅 FFMPEG 指南的这一部分。

有关 VP9 的特定选项,请参阅 FFMPEG 指南的这一部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhu hong yu

让灵感不被饿肚子!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值