ffmpeg在编码VP9时具有-quality
设置,选项为best
、good
和realtime
。这些选项如何影响其他可用的编码选项(例如-speed
, -slices
, -frame-parallel
等…)?我在某处读到-best
和-good -speed 0
将提供相同的质量,后者更快。对我来说,这听起来像是质量设置只是改变其他选项(如-speed
),好像它们只是预设,可以手动实现相同的结果。这是真的吗,还是质量设置影响了我用其他选项无法改变的东西?
在网上进行了更多的搜索并在libvpx代码中进行了一些挖掘之后,我想我已经弄清楚了。看起来ffmpeg -quality
命令和-deadline
命令是一样的。这些命令不直接影响其他选项,而仅仅决定编码器允许在任何特定帧上花费的时间量。如libvpx代码中的vpx_encoder.h
文件所述:
编码器支持软实时截止日期的概念。给定deadline参数的非零值,编码器将"尽最大努力"保证在给定的时间片过期之前返回。显然,限制可用的编码时间会降低输出质量。编码器可以通过指定截止日期'0'来无限制地生成最佳帧。这个截止日期取代了VPx"最佳质量、高质量、实时"的概念。希望将这些以前的设置映射到新的基于截止日期的系统的应用程序可以使用符号#VPX_DL_REALTIME, #VPX_DL_GOOD_QUALITY和#VPX_DL_BEST_QUALITY。
预设质量的值在此文件中定义为:
- BEST = 0 Microseconds = Infinite
- GOOD = 1000000 Microseconds = 1 Second
- REALTIME = 1 Microsecond
默认设置为Best