目录
- 1 描述
- 2 编解码器选项
- 3 解码器
- 4 视频解码器
- 5 音频解码器
- 6 字幕解码器
- 7 编码器
- 8 音频编码器
- 9 视频编码器
- 9.1 a64_multi, a64_multi5
- 9.2 Cinepak
- 9.3 GIF
- 9.4 Hap
- 9.5 jpeg2000
- 9.6 librav1e
- 9.7 libaom-av1
- 9.8 libsvtav1
- 9.9 libjxl
- 9.10 libkvazaar
- 9.11 libopenh264
- 9.12 libtheora
- 9.13 libvpx
- 9.14 libvvenc
- 9.15 libwebp
- 9.16 libx264, libx264rgb
- 9.17 libx265
- 9.18 libxavs2
- 9.19 libxeve
- 9.20 libxvid
- 9.21 MediaFoundation
- 9.22 Microsoft RLE
- 9.23 mpeg2
- 9.24 png
- 9.25 ProRes
- 9.26 QSV 编码器
- 9.27 snow
- 9.28 VAAPI 编码器
- 9.29 vbn
- 9.30 vc2
- 10 字幕编码器
- 11 另请参阅
- 12 作者
1 描述
本文档描述了 libavcodec 库提供的编解码器(解码器和编码器)。
2 编解码器选项
libavcodec 提供了一些通用的全局选项,可以设置在所有编码器和解码器上。此外,每个编解码器可能支持所谓的私有选项,这些选项是特定于给定编解码器的。
有时,全局选项可能只会影响特定类型的编解码器,并且可能对另一个编解码器毫无意义或被忽略,因此您需要了解指定选项的含义。此外,某些选项仅用于解码或编码。
可以通过在 FFmpeg 工具中指定 -选项 值 来设置选项,或者通过在 AVCodecContext
选项中显式设置值或使用 libavutil/opt.h API 进行程序化使用。
以下是支持的选项列表
- b 整数 (编码,音频,视频)
设置比特率,单位为比特/秒。默认值为 200K。
- ab 整数 (编码,音频)
设置音频比特率(单位为比特/秒)。默认值为 128K。
- bt 整数 (编码,视频)
设置视频比特率容差(单位为比特/秒)。在 1-pass 模式下,比特率容差指定码率控制愿意偏离目标平均比特率值的程度。这与最小/最大比特率无关。过低地降低容差会对质量产生不利影响。
- flags 标志 (解码/编码,音频,视频,字幕)
设置通用标志。
可能的值
- ‘mv4’
每个宏块使用四个运动向量 (mpeg4)。
- ‘qpel’
使用 1/4 像素运动补偿。
- ‘loop’
使用环路滤波器。
- ‘qscale’
使用固定 qscale。
- ‘pass1’
在第一遍模式下使用内部 2pass 码率控制。
- ‘pass2’
在第二遍模式下使用内部 2pass 码率控制。
- ‘gray’
仅解码/编码灰度。
- ‘psnr’
在编码期间设置 error[?] 变量。
- ‘truncated’
输入码流可能被随机截断。
- ‘drop_changed’
不要输出参数与流中第一个解码帧不同的帧。当帧被丢弃时,返回错误 AVERROR_INPUT_CHANGED。
- ‘ildct’
使用隔行 DCT。
- ‘low_delay’
强制低延迟。
- ‘global_header’
将全局标头放在 extradata 中,而不是每个关键帧中。
- ‘bitexact’
仅写入平台、构建和时间无关的数据。(除了 (I)DCT)。这确保文件和数据校验和是可重现的,并且在平台之间匹配。其主要用途是用于回归测试。
- ‘aic’
应用 H263 高级帧内编码/mpeg4 ac 预测。
- ‘ilme’
应用隔行运动估计。
- ‘cgop’
使用封闭 gop。
- ‘output_corrupt’
即使是可能损坏的帧也输出。
- time_base 有理数
设置编解码器时基。
它是时间的基本单位(以秒为单位),帧时间戳以其表示。对于固定帧率内容,时基应为
1 / frame_rate
,时间戳增量应完全为 1。- g 整数 (编码,视频)
设置图像组 (GOP) 大小。默认值为 12。
- ar 整数 (解码/编码,音频)
设置音频采样率(单位为 Hz)。
- ac 整数 (解码/编码,音频)
设置音频通道数。
- cutoff 整数 (编码,音频)
设置截止带宽。(仅受选定的编码器支持,请参阅其各自的文档部分。)
- frame_size 整数 (编码,音频)
设置音频帧大小。
每个提交的帧(最后一个除外)必须包含每个通道正好 frame_size 个采样。当编解码器设置了 CODEC_CAP_VARIABLE_FRAME_SIZE 时,可能为 0,在这种情况下,帧大小不受限制。它由某些解码器设置以指示恒定帧大小。
- frame_number 整数
设置帧号。
- delay 整数
- qcomp 浮点数 (编码,视频)
设置视频量化器比例压缩 (VBR)。它在码率控制方程中用作常数。默认 rc_eq 的建议范围:0.0-1.0。
- qblur 浮点数 (编码,视频)
设置视频量化器比例模糊 (VBR)。
- qmin 整数 (编码,视频)
设置最小视频量化器比例 (VBR)。必须包含在 -1 和 69 之间,默认值为 2。
- qmax 整数 (编码,视频)
设置最大视频量化器比例 (VBR)。必须包含在 -1 和 1024 之间,默认值为 31。
- qdiff 整数 (编码,视频)
设置量化器比例之间的最大差异 (VBR)。
- bf 整数 (编码,视频)
设置非 B 帧之间 B 帧的最大数量。
必须是 -1 到 16 之间的整数。0 表示禁用 B 帧。如果使用值 -1,它将根据编码器选择一个自动值。
默认值为 0。
- b_qfactor 浮点数 (编码,视频)
设置 P 帧和 B 帧之间的 qp 因子。
- codec_tag 整数
- bug 标志 (解码,视频)
解决未自动检测到的编码器错误。
可能的值
- ‘autodetect’
- ‘xvid_ilace’
Xvid 隔行扫描错误(如果 fourcc==XVIX 则自动检测)
- ‘ump4’
(如果 fourcc==UMP4 则自动检测)
- ‘no_padding’
填充错误(自动检测)
- ‘amv’
- ‘qpel_chroma’
- ‘std_qpel’
旧标准 qpel(每个 fourcc/版本自动检测)
- ‘qpel_chroma2’
- ‘direct_blocksize’
direct-qpel-blocksize 错误(每个 fourcc/版本自动检测)
- ‘edge’
边缘填充错误(每个 fourcc/版本自动检测)
- ‘hpel_chroma’
- ‘dc_clip’
- ‘ms’
解决 microsoft 损坏的解码器中的各种错误。
- ‘trunc’
截断帧
- strict 整数 (解码/编码,音频,视频)
指定严格遵守标准的程度。
可能的值
- ‘very’
严格遵守规范或参考软件的旧版本
- ‘strict’
严格遵守规范中的所有内容,无论后果如何
- ‘normal’
- ‘unofficial’
允许非官方扩展
- ‘experimental’
允许非标准化的实验性内容、实验性(未完成/正在进行中/未经良好测试)解码器和编码器。注意:实验性解码器可能构成安全风险,请勿将其用于解码不受信任的输入。
- b_qoffset 浮点数 (编码,视频)
设置 P 帧和 B 帧之间的 QP 偏移。
- err_detect 标志 (解码,音频,视频)
设置错误检测标志。
可能的值
- ‘crccheck’
验证嵌入的 CRC
- ‘bitstream’
检测码流规范偏差
- ‘buffer’
检测不正确的码流长度
- ‘explode’
在检测到轻微错误时中止解码
- ‘ignore_err’
忽略解码错误,并继续解码。如果您想分析视频内容,并因此希望解码所有内容,无论发生什么情况,这都很有用。如果出现错误,此选项不会产生令人愉悦观看的视频。
- ‘careful’
将违反规范且未在实际应用中遇到的情况视为错误
- ‘compliant’
将所有不符合规范的情况视为错误
- ‘aggressive’
将健全的编码器不应执行的操作视为错误
- has_b_frames 整数
- block_align 整数
- rc_override_count 整数
- maxrate 整数 (编码,音频,视频)
设置最大比特率容差(单位为比特/秒)。需要设置 bufsize。
- minrate 整数 (编码,音频,视频)
设置最小比特率容差(单位为比特/秒)。在设置 CBR 编码时最有用。否则几乎没有用处。
- bufsize 整数 (编码,音频,视频)
设置码率控制缓冲区大小(单位为比特)。
- i_qfactor 浮点数 (编码,视频)
设置 P 帧和 I 帧之间的 QP 因子。
- i_qoffset 浮点数 (编码,视频)
设置 P 帧和 I 帧之间的 QP 偏移。
- dct 整数 (编码,视频)
设置 DCT 算法。
可能的值
- ‘auto’
自动选择一个好的算法(默认)
- ‘fastint’
快速整数
- ‘int’
精确整数
- ‘mmx’
- ‘altivec’
- ‘faan’
浮点 AAN DCT
- lumi_mask 浮点数 (编码,视频)
比中等区域更强烈地压缩明亮区域。
- tcplx_mask 浮点数 (编码,视频)
设置时间复杂度掩蔽。
- scplx_mask 浮点数 (编码,视频)
设置空间复杂度掩蔽。
- p_mask 浮点数 (编码,视频)
设置帧间掩蔽。
- dark_mask 浮点数 (编码,视频)
比中等区域更强烈地压缩黑暗区域。
- idct 整数 (解码/编码,视频)
选择 IDCT 实现。
可能的值
- ‘auto’
- ‘int’
- ‘simple’
- ‘simplemmx’
- ‘simpleauto’
自动选择与简单 IDCT 兼容的 IDCT
- ‘arm’
- ‘altivec’
- ‘sh4’
- ‘simplearm’
- ‘simplearmv5te’
- ‘simplearmv6’
- ‘simpleneon’
- ‘xvid’
- ‘faani’
浮点 AAN IDCT
- slice_count 整数
- ec 标志 (解码,视频)
设置错误隐藏策略。
可能的值
- ‘guess_mvs’
迭代运动向量 (MV) 搜索(慢)
- ‘deblock’
对损坏的 MB 使用强去块滤波器
- ‘favor_inter’
优先从上一帧而不是当前帧进行预测
- bits_per_coded_sample 整数
- aspect 有理数 (编码,视频)
设置采样纵横比。
- sar 有理数 (编码,视频)
设置采样纵横比。 aspect 的别名。
- debug 标志 (解码/编码,音频,视频,字幕)
打印特定的调试信息。
可能的值
- ‘pict’
图像信息
- ‘rc’
码率控制
- ‘bitstream’
- ‘mb_type’
宏块 (MB) 类型
- ‘qp’
每块量化参数 (QP)
- ‘dct_coeff’
- ‘green_metadata’
显示即将到来的帧、GoP 或给定持续时间的复杂度元数据。
- ‘skip’
- ‘startcode’
- ‘er’
错误识别
- ‘mmco’
内存管理控制操作 (H.264)
- ‘bugs’
- ‘buffers’
图像缓冲区分配
- ‘thread_ops’
线程操作
- ‘nomc’
跳过运动补偿
- cmp 整数 (编码,视频)
设置全像素运动估计比较函数。
可能的值
- ‘sad’
绝对差值和,快速(默认)
- ‘sse’
平方误差和
- ‘satd’
绝对哈达玛变换差值和
- ‘dct’
绝对 DCT 变换差值和
- ‘psnr’
平方量化误差和(避免,低质量)
- ‘bit’
块所需的位数
- ‘rd’
码率失真最优,慢
- ‘zero’
0
- ‘vsad’
绝对垂直差值和
- ‘vsse’
平方垂直差值和
- ‘nsse’
噪声保持平方差值和
- ‘w53’
5/3 小波,仅在 snow 中使用
- ‘w97’
9/7 小波,仅在 snow 中使用
- ‘dctmax’
- ‘chroma’
- subcmp 整数 (编码,视频)
设置子像素运动估计比较函数。
可能的值
- ‘sad’
绝对差值和,快速(默认)
- ‘sse’
平方误差和
- ‘satd’
绝对哈达玛变换差值和
- ‘dct’
绝对 DCT 变换差值和
- ‘psnr’
平方量化误差和(避免,低质量)
- ‘bit’
块所需的位数
- ‘rd’
码率失真最优,慢
- ‘zero’
0
- ‘vsad’
绝对垂直差值和
- ‘vsse’
平方垂直差值和
- ‘nsse’
噪声保持平方差值和
- ‘w53’
5/3 小波,仅在 snow 中使用
- ‘w97’
9/7 小波,仅在 snow 中使用
- ‘dctmax’
- ‘chroma’
- mbcmp 整数 (编码,视频)
设置宏块比较函数。
可能的值
- ‘sad’
绝对差值和,快速(默认)
- ‘sse’
平方误差和
- ‘satd’
绝对哈达玛变换差值和
- ‘dct’
绝对 DCT 变换差值和
- ‘psnr’
平方量化误差和(避免,低质量)
- ‘bit’
块所需的位数
- ‘rd’
码率失真最优,慢
- ‘zero’
0
- ‘vsad’
绝对垂直差值和
- ‘vsse’
平方垂直差值和
- ‘nsse’
噪声保持平方差值和
- ‘w53’
5/3 小波,仅在 snow 中使用
- ‘w97’
9/7 小波,仅在 snow 中使用
- ‘dctmax’
- ‘chroma’
- ildctcmp 整数 (编码,视频)
设置隔行 dct 比较函数。
可能的值
- ‘sad’
绝对差值和,快速(默认)
- ‘sse’
平方误差和
- ‘satd’
绝对哈达玛变换差值和
- ‘dct’
绝对 DCT 变换差值和
- ‘psnr’
平方量化误差和(避免,低质量)
- ‘bit’
块所需的位数
- ‘rd’
码率失真最优,慢
- ‘zero’
0
- ‘vsad’
绝对垂直差值和
- ‘vsse’
平方垂直差值和
- ‘nsse’
噪声保持平方差值和
- ‘w53’
5/3 小波,仅在 snow 中使用
- ‘w97’
9/7 小波,仅在 snow 中使用
- ‘dctmax’
- ‘chroma’
- dia_size 整数 (编码,视频)
设置运动估计的菱形类型和大小。
- ‘(1024, INT_MAX)’
完全运动估计(最慢)
- ‘(768, 1024]’
umh 运动估计
- ‘(512, 768]’
hex 运动估计
- ‘(256, 512]’
l2s 菱形运动估计
- ‘[2,256]’
var 菱形运动估计
- ‘(-1, 2)’
小菱形运动估计
- ‘-1’
有趣菱形运动估计
- ‘(INT_MIN, -1)’
sab 菱形运动估计
- last_pred 整数 (编码,视频)
设置来自上一帧的运动预测器的数量。
- precmp 整数 (编码,视频)
设置预运动估计比较函数。
可能的值
- ‘sad’
绝对差值和,快速(默认)
- ‘sse’
平方误差和
- ‘satd’
绝对哈达玛变换差值和
- ‘dct’
绝对 DCT 变换差值和
- ‘psnr’
平方量化误差和(避免,低质量)
- ‘bit’
块所需的位数
- ‘rd’
码率失真最优,慢
- ‘zero’
0
- ‘vsad’
绝对垂直差值和
- ‘vsse’
平方垂直差值和
- ‘nsse’
噪声保持平方差值和
- ‘w53’
5/3 小波,仅在 snow 中使用
- ‘w97’
9/7 小波,仅在 snow 中使用
- ‘dctmax’
- ‘chroma’
- pre_dia_size 整数 (编码,视频)
设置运动估计预先处理的菱形类型和大小。
- subq 整数 (编码,视频)
设置子像素运动估计质量。
- me_range 整数 (编码,视频)
设置限制运动向量范围(DivX 播放器为 1023)。
- global_quality 整数 (编码,音频,视频)
- slice_flags 整数
- mbd 整数 (编码,视频)
设置宏块决策算法(高质量模式)。
可能的值
- ‘simple’
使用 mbcmp(默认)
- ‘bits’
使用最少位
- ‘rd’
使用最佳码率失真
- rc_init_occupancy 整数 (编码,视频)
设置解码开始前应加载到 rc 缓冲区中的位数。
- flags2 标志 (解码/编码,音频,视频,字幕)
-
可能的值
- ‘fast’
允许不符合规范的加速技巧。
- ‘noout’
跳过码流编码。
- ‘ignorecrop’
忽略来自 sps 的裁剪信息。
- ‘local_header’
将全局标头放在每个关键帧而不是 extradata 中。
- ‘chunks’
帧数据可能被拆分为多个块。
- ‘showall’
显示第一个关键帧之前的所有帧。
- ‘export_mvs’
将运动向量导出到帧边数据中(请参阅
AV_FRAME_DATA_MOTION_VECTORS
),适用于支持它的编解码器。另请参阅 doc/examples/export_mvs.c。- ‘skip_manual’
不要跳过样本,并将跳过信息导出为帧边数据。
- ‘ass_ro_flush_noop’
在刷新时不要重置 ASS ReadOrder 字段。
- ‘icc_profiles’
从/向色度标签生成/解析嵌入的 ICC 配置文件。
- export_side_data 标志 (解码/编码,音频,视频,字幕)
-
可能的值
- ‘mvs’
将运动向量导出到帧边数据中(请参阅
AV_FRAME_DATA_MOTION_VECTORS
),适用于支持它的编解码器。另请参阅 doc/examples/export_mvs.c。- ‘prft’
将编码器 Producer Reference Time 导出到数据包边数据中(请参阅
AV_PKT_DATA_PRFT
),适用于支持它的编解码器。- ‘venc_params’
通过帧边数据导出视频编码参数(请参阅
AV_FRAME_DATA_VIDEO_ENC_PARAMS
),适用于支持它的编解码器。目前,这些是 H.264 和 VP9。- ‘film_grain’
通过帧边数据导出胶片颗粒参数(请参阅
AV_FRAME_DATA_FILM_GRAIN_PARAMS
)。目前 AV1 解码器支持。- ‘enhancements’
通过帧边数据导出图像增强元数据,例如 LCEVC(请参阅
AV_FRAME_DATA_LCEVC
)。
- threads 整数 (解码/编码,视频)
设置要使用的线程数,以防选定的编解码器实现支持多线程。
可能的值
- ‘auto, 0’
自动选择要设置的线程数
默认值为 ‘auto’。
- dc 整数 (编码,视频)
设置 intra_dc_precision。
- nssew 整数 (编码,视频)
设置 nsse 权重。
- skip_top 整数 (解码,视频)
设置顶部跳过的宏块行数。
- skip_bottom 整数 (解码,视频)
设置底部跳过的宏块行数。
- profile 整数 (编码,音频,视频)
-
设置编码器编解码器配置文件。默认值为 ‘unknown’。编码器特定的配置文件记录在相关的编码器文档中。
- level 整数 (编码,音频,视频)
-
设置编码器级别。此级别取决于特定的编解码器,并且可能与配置文件级别相对应。默认设置为 ‘unknown’。
可能的值
- ‘unknown’
- lowres 整数 (解码,音频,视频)
以 1= 1/2、2=1/4、3=1/8 分辨率解码。
- mblmin 整数 (编码,视频)
设置最小宏块拉格朗日因子 (VBR)。
- mblmax 整数 (编码,视频)
设置最大宏块拉格朗日因子 (VBR)。
- skip_loop_filter 整数 (解码,视频)
- skip_idct 整数 (解码,视频)
- skip_frame 整数 (解码,视频)
-
根据选项值选择的帧类型,使解码器丢弃处理。
skip_loop_filter 跳过帧环路滤波,skip_idct 跳过帧 IDCT/反量化,skip_frame 跳过解码。
可能的值
- ‘none’
不丢弃任何帧。
- ‘default’
丢弃无用的帧,例如 0 大小的帧。
- ‘noref’
丢弃所有非参考帧。
- ‘bidir’
丢弃所有双向帧。
- ‘nokey’
丢弃除关键帧外的所有帧。
- ‘nointra’
丢弃除 I 帧外的所有帧。
- ‘all’
丢弃所有帧。
默认值为 ‘default’。
- bidir_refine 整数 (编码,视频)
优化双向宏块中使用的两个运动向量。
- keyint_min 整数 (编码,视频)
设置 IDR 帧之间的最小间隔。
- refs 整数 (编码,视频)
设置用于运动补偿的参考帧。
- trellis 整数 (编码,音频,视频)
设置码率失真最优量化。
- mv0_threshold 整数 (编码,视频)
- compression_level 整数 (编码,音频,视频)
- bits_per_raw_sample 整数
- channel_layout 整数 (解码/编码,音频)
有关所需语法,请参阅 (ffmpeg-utils)ffmpeg-utils(1) 手册中的通道布局部分。
- rc_max_vbv_use 浮点数 (编码,视频)
- rc_min_vbv_use 浮点数 (编码,视频)
- color_primaries 整数 (解码/编码,视频)
可能的值
- ‘bt709’
BT.709
- ‘bt470m’
BT.470 M
- ‘bt470bg’
BT.470 BG
- ‘smpte170m’
SMPTE 170 M
- ‘smpte240m’
SMPTE 240 M
- ‘film’
胶片
- ‘bt2020’
BT.2020
- ‘smpte428’
- ‘smpte428_1’
SMPTE ST 428-1
- ‘smpte431’
SMPTE 431-2
- ‘smpte432’
SMPTE 432-1
- ‘jedec-p22’
JEDEC P22
- color_trc 整数 (解码/编码,视频)
可能的值
- ‘bt709’
BT.709
- ‘gamma22’
BT.470 M
- ‘gamma28’
BT.470 BG
- ‘smpte170m’
SMPTE 170 M
- ‘smpte240m’
SMPTE 240 M
- ‘linear’
线性
- ‘log’
- ‘log100’
对数
- ‘log_sqrt’
- ‘log316’
对数平方根
- ‘iec61966_2_4’
- ‘iec61966-2-4’
IEC 61966-2-4
- ‘bt1361’
- ‘bt1361e’
BT.1361
- ‘iec61966_2_1’
- ‘iec61966-2-1’
IEC 61966-2-1
- ‘bt2020_10’
- ‘bt2020_10bit’
BT.2020 - 10 位
- ‘bt2020_12’
- ‘bt2020_12bit’
BT.2020 - 12 位
- ‘smpte2084’
SMPTE ST 2084
- ‘smpte428’
- ‘smpte428_1’
SMPTE ST 428-1
- ‘arib-std-b67’
ARIB STD-B67
- colorspace 整数 (解码/编码,视频)
可能的值
- ‘rgb’
RGB
- ‘bt709’
BT.709
- ‘fcc’
FCC
- ‘bt470bg’
BT.470 BG
- ‘smpte170m’
SMPTE 170 M
- ‘smpte240m’
SMPTE 240 M
- ‘ycocg’
YCOCG
- ‘bt2020nc’
- ‘bt2020_ncl’
BT.2020 NCL
- ‘bt2020c’
- ‘bt2020_cl’
BT.2020 CL
- ‘smpte2085’
SMPTE 2085
- ‘chroma-derived-nc’
色度衍生 NCL
- ‘chroma-derived-c’
色度衍生 CL
- ‘ictcp’
ICtCp
- color_range 整数 (解码/编码,视频)
如果用作输入参数,则作为解码器的提示,指示输入具有的 color_range。可能的值
- ‘tv’
- ‘mpeg’
- ‘limited’
MPEG (219*2^(n-8))
- ‘pc’
- ‘jpeg’
- ‘full’
JPEG (2^n-1)
- chroma_sample_location 整数 (解码/编码,视频)
可能的值
- ‘left’
- ‘center’
- ‘topleft’
- ‘top’
- ‘bottomleft’
- ‘bottom’
- log_level_offset 整数
设置日志级别偏移。
- slices 整数 (编码,视频)
切片数,用于并行编码。
- thread_type 标志 (解码/编码,视频)
选择要使用的多线程方法。
使用 ‘frame’ 将使解码延迟每个线程增加一帧,因此无法提供未来帧的客户端不应使用它。
可能的值
- ‘slice’
一次解码单个帧的多个部分。
仅当视频以切片编码时,使用切片的多线程才有效。
- ‘frame’
一次解码多个帧。
默认值为 ‘slice+frame’。
- audio_service_type 整数 (编码,音频)
设置音频服务类型。
可能的值
- ‘ma’
主音频服务
- ‘ef’
效果
- ‘vi’
视觉障碍
- ‘hi’
听觉障碍
- ‘di’
对话
- ‘co’
评论
- ‘em’
紧急
- ‘vo’
配音
- ‘ka’
卡拉 OK
- request_sample_fmt sample_fmt (解码,音频)
设置音频解码器应首选的采样格式。默认值为
none
。- pkt_timebase 有理数
- sub_charenc 编码 (解码,字幕)
设置输入字幕字符编码。
- field_order 场序 (视频)
设置/覆盖视频的场序。可能的值
- ‘progressive’
逐行扫描视频
- ‘tt’
隔行扫描视频,顶场先编码和显示
- ‘bb’
隔行扫描视频,底场先编码和显示
- ‘tb’
隔行扫描视频,顶场先编码,底场先显示
- ‘bt’
隔行扫描视频,底场先编码,顶场先显示
- skip_alpha 布尔值 (解码,视频)
设置为 1 以禁用处理 alpha(透明度)。这类似于 flags 选项中的 ‘gray’ 标志,后者跳过色度信息而不是 alpha。默认为 0。
- codec_whitelist 列表 (输入)
允许的解码器的“,”分隔列表。默认情况下,允许所有解码器。
- dump_separator 字符串 (输入)
用于分隔命令行上打印的有关流参数的字段的分隔符。例如,要用换行符和缩进分隔字段
ffprobe -dump_separator " " -i ~/videos/matrixbench_mpeg2.mpg
- max_pixels 整数 (解码/编码,视频)
每张图像的最大像素数。此值可用于避免由于大图像导致的内存不足错误。
- apply_cropping 布尔值 (解码,视频)
如果裁剪参数是左侧和顶部参数所需对齐的倍数,则启用裁剪。如果未满足对齐,则将部分应用裁剪以保持对齐。默认值为 1(启用)。注意:所需的对齐取决于是否设置了
AV_CODEC_FLAG_UNALIGNED
和 CPU。无法从命令行更改AV_CODEC_FLAG_UNALIGNED
。此外,硬件解码器不会应用左/上裁剪。
3 解码器
解码器是 FFmpeg 中配置的元素,允许解码多媒体流。
当您配置 FFmpeg 构建时,默认情况下会启用所有受支持的本机解码器。需要外部库的解码器必须通过相应的 --enable-lib
选项手动启用。您可以使用配置选项 --list-decoders
列出所有可用的解码器。
您可以使用配置选项 --disable-decoders
禁用所有解码器,并使用选项 --enable-decoder=DECODER
/ --disable-decoder=DECODER
选择性地启用/禁用单个解码器。
ff* 工具的选项 -decoders
将显示已启用解码器的列表。
4 视频解码器
以下是一些当前可用的视频解码器的描述。
4.1 av1
AOMedia Video 1 (AV1) 解码器。
4.1.1 选项
- operating_point
选择可伸缩 AV1 码流的运行点 (0 - 31)。默认为 0。
4.2 hevc
HEVC(又名 ITU-T H.265 或 ISO/IEC 23008-2)解码器。
解码器支持最多两个视角的 MV-HEVC 多视角流。要输出的视图通过向解码器提供视图 ID 列表(view_ids 选项)来选择。此选项可以在解码器初始化之前静态设置,也可以从 get_format()
回调中设置 - 对于视图计数或 ID 在解码期间动态更改的情况很有用。
默认情况下仅解码基础层。
请注意,如果您正在使用 ffmpeg
CLI 工具,则应使用其手册中记录的视图说明符,而不是此处记录的选项。
4.2.1 选项
- view_ids (MV-HEVC)
指定应输出的视图 ID 列表。此选项也可以设置为单个 '-1',这将导致解码和输出 VPS 中定义的所有视图。
- view_ids_available (MV-HEVC)
调用者可以读取此选项以检索活动 VPS 中可用的视图 ID 数组。对于单层视频,数组为空。
当从
get_format()
回调中读取时,保证此选项的值是准确的。它也可以在其他时间设置(例如,打开解码器后),但该值仅供参考,并且可能不正确(例如,当流包含多个不同的 VPS NALU 时)。- view_pos_available (MV-HEVC)
调用者可以读取此选项以检索活动 VPS 中可用的视图位置(左、右或未指定)数组,如
AVStereo3DView
值。当数组可用时,其元素适用于 view_ids_available 的相应元素,即view_pos_available[i]
包含 ID 为view_ids_available[i]
的视图的位置。与 view_ids_available 相同的有效性限制适用于此选项。
4.3 rawvideo
原始视频解码器。
此解码器解码 rawvideo 流。
4.3.1 选项
- top top_field_first
指定输入视频的假定场类型。
- -1
假定视频为逐行扫描(默认)
- 0
假定为底场优先
- 1
假定为顶场优先
4.4 libdav1d
dav1d AV1 解码器。
libdav1d 允许 libavcodec 解码 AOMedia Video 1 (AV1) 编解码器。配置期间需要 libdav1d 标头和库的存在。您需要使用 --enable-libdav1d
显式配置构建。
4.4.1 选项
libdav1d 包装器支持以下选项。
- framethreads
设置解码期间要使用的帧线程数。默认值为 0(自动检测)。对于 libdav1d >= 1.0,此选项已弃用,将来将被删除。请改用选项
max_frame_delay
和全局选项threads
。- tilethreads
设置解码期间要使用的瓦片线程数。默认值为 0(自动检测)。对于 libdav1d >= 1.0,此选项已弃用,将来将被删除。请改用全局选项
threads
。- max_frame_delay
设置解码器可能在内部缓冲的最大帧数。默认值为 0(自动检测)。
- filmgrain
如果码流中存在胶片颗粒,则将其应用于解码后的视频。默认为库的内部默认值。此选项已弃用,将来将被删除。请参阅全局选项
export_side_data
以导出胶片颗粒参数,而不是应用它。- oppoint
选择可伸缩 AV1 码流的运行点 (0 - 31)。默认为库的内部默认值。
- alllayers
输出可伸缩 AV1 码流的所有空间层。默认值为 false。
4.5 libdavs2
AVS2-P2/IEEE1857.4 视频解码器包装器。
此解码器允许 libavcodec 使用 davs2 库解码 AVS2 流。
4.6 libuavs3d
AVS3-P2/IEEE1857.10 视频解码器。
libuavs3d 允许 libavcodec 解码 AVS3 流。配置期间需要 libuavs3d 标头和库的存在。您需要使用 --enable-libuavs3d
显式配置构建。
4.6.1 选项
libuavs3d 包装器支持以下选项。
- frame_threads
设置解码期间要使用的帧线程数。默认值为 0(自动检测)。
4.7 libxevd
eXtra-fast Essential Video Decoder (XEVD) MPEG-5 EVC 解码器包装器。
此解码器需要在配置期间存在 libxevd 标头和库。您需要使用 --enable-libxevd 显式配置构建。
xevd 项目网站位于 https://github.com/mpeg5/xevd。
4.7.1 选项
libxevd 包装器支持以下选项。括号中列出了 xevd 等效选项或值,以便于迁移。
要获得更准确和广泛的 libxevd 选项文档,请调用命令 xevd_app --help
或查阅 libxevd 文档。
- threads (threads)
强制使用特定数量的线程
4.8 QSV 解码器
Intel QuickSync Video 解码器系列(VC1、MPEG-2、H.264、HEVC、JPEG/MJPEG、VP8、VP9、AV1、VVC)。
4.8.1 通用选项
所有 qsv 解码器都支持以下选项。
- async_depth
内部并行化深度,值越高,延迟越高。
- gpu_copy
视频内存和系统内存之间的 GPU 加速复制
- ‘default’
- ‘on’
- ‘off’
4.8.2 HEVC 选项
hevc_qsv 的额外选项。
- load_plugin
要在内部会话中加载的用户插件
- ‘none’
- ‘hevc_sw’
- ‘hevc_hw’
- load_plugins
要在内部会话中加载的十六进制插件 UID 的 :-separated 列表
4.9 v210
未压缩的 4:2:2 10 位解码器。
4.9.1 选项
- custom_stride
设置 v210 数据的行大小(以字节为单位)。默认值为 0(自动检测)。您可以将特殊值 -1 用于 BOXX 文件中看到的无跨距 v210。
5 音频解码器
以下是一些当前可用的音频解码器的描述。
5.1 ac3
AC-3 音频解码器。
此解码器实现了 ATSC A/52:2010 和 ETSI TS 102 366 的一部分,以及未记录的 RealAudio 3(又名 dnet)。
5.1.1 AC-3 解码器选项
- -drc_scale 值
动态范围缩放因子。要应用于 AC-3 流中动态范围值的因子。此因子以指数方式应用。默认值为 1。有 3 个值得注意的缩放因子范围
- drc_scale == 0
DRC 已禁用。产生全范围音频。
- 0 < drc_scale <= 1
DRC 已启用。应用流 DRC 值的一部分。音频再现介于全范围和全压缩之间。
- drc_scale > 1
DRC 已启用。不对称地应用 drc_scale。响亮的声音被完全压缩。柔和的声音得到增强。
5.2 flac
FLAC 音频解码器。
此解码器旨在实现 Xiph 的完整 FLAC 规范。
5.2.1 FLAC 解码器选项
- -use_buggy_lpc
lavc FLAC 编码器过去常常生成具有高 lpc 值(如默认值)的错误流。此选项通过使用 lavc 的旧错误 lpc 逻辑进行解码,可以正确解码此类流。
5.3 ffwavesynth
内部波形合成器。
此解码器根据预定义的序列生成波形模式。它的使用纯粹是内部的,它接受的数据格式没有公开记录。
5.4 libcelt
libcelt 解码器包装器。
libcelt 允许 libavcodec 解码 Xiph CELT 超低延迟音频编解码器。配置期间需要 libcelt 标头和库的存在。您需要使用 --enable-libcelt
显式配置构建。
5.5 libgsm
libgsm 解码器包装器。
libgsm 允许 libavcodec 解码 GSM 全速率音频编解码器。配置期间需要 libgsm 标头和库的存在。您需要使用 --enable-libgsm
显式配置构建。
此解码器同时支持普通 GSM 和 Microsoft 变体。
5.6 libilbc
libilbc 解码器包装器。
libilbc 允许 libavcodec 解码 Internet 低比特率编解码器 (iLBC) 音频编解码器。配置期间需要 libilbc 标头和库的存在。您需要使用 --enable-libilbc
显式配置构建。
5.6.1 选项
libilbc 包装器支持以下选项。
- enhance
-
设置为 1 时,启用解码音频的增强功能。默认值为 0(禁用)。
5.7 libopencore-amrnb
libopencore-amrnb 解码器包装器。
libopencore-amrnb 允许 libavcodec 解码自适应多速率窄带音频编解码器。使用它需要在配置期间存在 libopencore-amrnb 标头和库。您需要使用 --enable-libopencore-amrnb
显式配置构建。
存在 AMR-NB 的 FFmpeg 本机解码器,因此用户可以解码 AMR-NB 而无需此库。
5.8 libopencore-amrwb
libopencore-amrwb 解码器包装器。
libopencore-amrwb 允许 libavcodec 解码自适应多速率宽带音频编解码器。使用它需要在配置期间存在 libopencore-amrwb 标头和库。您需要使用 --enable-libopencore-amrwb
显式配置构建。
存在 AMR-WB 的 FFmpeg 本机解码器,因此用户可以解码 AMR-WB 而无需此库。
5.9 libopus
libopus 解码器包装器。
libopus 允许 libavcodec 解码 Opus 交互式音频编解码器。配置期间需要 libopus 标头和库的存在。您需要使用 --enable-libopus
显式配置构建。
存在 Opus 的 FFmpeg 本机解码器,因此用户可以解码 Opus 而无需此库。
6 字幕解码器
6.1 libaribb24
ARIB STD-B24 字幕解码器。
实现 ARIB STD-B24 标准的配置文件 A 和 C。
6.1.1 libaribb24 解码器选项
- -aribb24-base-path 路径
设置 libaribb24 库的基本路径。这用于读取配置文件(用于自定义 unicode 转换),以及用于将非文本符号转储为该位置下的图像。
默认未设置。
- -aribb24-skip-ruby-text 布尔值
告诉解码器包装器跳过包含半高 ruby 文本的文本块。
默认启用。
6.2 libaribcaption
又一个使用外部 libaribcaption 库的 ARIB STD-B24 字幕解码器。
实现日本 ARIB STD-B24 标准的配置文件 A 和 C、巴西 ABNT NBR 15606-1 和菲律宾版本的 ISDB-T。
配置期间需要 libaribcaption 标头和库 (https://github.com/xqq/libaribcaption) 的存在。您需要使用 --enable-libaribcaption
显式配置构建。如果同时启用了 libaribb24 和 libaribcaption,则 libaribcaption 解码器优先。
6.2.1 libaribcaption 解码器选项
- -sub_type 字幕类型
指定解码字幕的格式。
- ‘bitmap’
图形图像。
- ‘ass’
ASS 格式化文本。
- ‘text’
没有格式的简单基于文本的输出。
默认值与 libaribb24 解码器相同,为 ass。一些当前的播放器(例如,mpv)期望 ARIB 字幕采用 ASS 格式。
- -caption_encoding 编码方案
指定输入字幕文本的编码方案。
- ‘auto’
自动检测文本编码(默认)。
- ‘jis’
ARIB STD B24 中定义的 8 位字符 JIS 编码。此编码在日本用于 ISDB 字幕。
- ‘utf8’
ARIB STD B24 中定义的 UTF-8 编码。此编码在菲律宾用于 ISDB-T 字幕。
- ‘latin’
ABNT NBR 15606-1 中定义的拉丁字符编码。此编码在南美用于 SBTVD/ISDB-Tb 字幕。
- -font 字体名称[,字体名称2,...]
指定要用于 bitmap 或 ass 类型字幕渲染的逗号分隔的字体系列名称列表。仅第一个字体名称用于 ass 类型字幕。
如果未指定,则使用内部定义的默认字体系列。
- -ass_single_rect 布尔值
ARIB STD-B24 规定某些字幕可能在同一时间以不同的位置显示(多矩形字幕)。由于某些播放器(例如,旧的 mpv)无法处理单个 AVSubtitle 中的多个 ASS 矩形,或者具有相同开始时间戳的不确定持续时间的多个 ASS 矩形,因此此选项可以更改行为,以便所有文本都显示在单个 ASS 矩形中。
默认值为 false。
如果您的播放器无法正确处理具有多个 ASS 矩形的 AVSubtitle,请将此选项设置为 true 或定义
ASS_SINGLE_RECT=1
以在编译时更改默认行为。- -force_outline_text 布尔值
指定是否始终为所有字符渲染轮廓文本,而不管字符样式是否指示。
默认值为 false。
- -outline_width 数字 (0.0 - 3.0)
指定轮廓文本的宽度,以点(相对)为单位。
默认值为 1.5。
- -ignore_background 布尔值
指定是否忽略背景颜色渲染。
默认值为 false。
- -ignore_ruby 布尔值
指定是否忽略 ruby 类(假名)字符的渲染。
默认值为 false。
- -replace_drcs 布尔值
指定是否将替换的 DRCS 字符渲染为 Unicode 字符。
默认值为 true。
- -replace_msz_ascii 布尔值
指定是否将 MSZ(中等大小;半角)全角字母数字字符替换为半角字母数字字符。
默认值为 true。
- -replace_msz_japanese 布尔值
指定是否将一些 MSZ(中等大小;半角)全角日语特殊字符替换为半角字符。
默认值为 true。
- -replace_msz_glyph 布尔值
指定如果字体支持,是否将 MSZ(中等大小;半角)字符替换为半角字形。此选项在 FreeType 或 DirectWrite 渲染器以及符合 Adobe-Japan1 标准的字体下工作。例如,IBM Plex Sans JP、Morisawa BIZ UDGothic、Morisawa BIZ UDMincho、Yu Gothic、Yu Mincho 和 Meiryo。
默认值为 true。
- -canvas_size 图像大小
指定用于渲染字幕的画布分辨率;通常,这应该是输入视频的帧大小。这仅在
-subtitle_type
设置为 bitmap 时适用。libaribcaption 解码器假定位图渲染的输入帧大小如下
- PROFILE_A : 1440 x 1080,SAR (PAR) 4:3
- PROFILE_C : 320 x 180,SAR (PAR) 1:1
如果输入视频的实际帧大小与上述假设不符,则渲染的字幕可能会失真。为了使字幕不失真,请添加
-canvas_size
选项以指定实际输入视频大小。请注意,对于大小不同但纵横比相同的视频,不需要
-canvas_size
选项。在这种情况下,如果未指定-canvas_size
选项,则字幕将被拉伸或缩小到实际视频大小。如果指定了具有不同大小的-canvas_size
选项,则字幕将按指定大小拉伸或缩小,并计算 SAR。
6.2.2 libaribcaption 解码器使用范例
使用 ffplay
工具显示带有 ARIB 字幕的 MPEG-TS 文件
ffplay -sub_type bitmap MPEG.TS
使用 ffplay
工具显示输入帧大小为 1920x1080 的 MPEG-TS 文件
ffplay -sub_type bitmap -canvas_size 1920x1080 MPEG.TS
在转码视频中嵌入 ARIB 字幕
ffmpeg -sub_type bitmap -i src.m2t -filter_complex "[0:v][0:s]overlay" -vcodec h264 dest.mp4
6.3 dvbsub
6.3.1 选项
- compute_clut
- -2
如果在流中没有匹配的 CLUT,则计算一次 clut。
- -1
如果在流中没有匹配的 CLUT,则计算 clut。
- 0
永不计算 CLUT
- 1
始终计算 CLUT 并覆盖流中提供的 CLUT。
- dvb_substream
选择 dvb 子流,如果为 -1(默认值),则选择所有子流。
6.4 dvdsub
此编解码器解码 DVD 中使用的位图字幕;相同的字幕也可以在 VobSub 文件对和某些 Matroska 文件中找到。
6.4.1 选项
- palette
指定位图使用的全局调色板。当存储在 VobSub 中时,调色板通常在索引文件中指定;在 Matroska 中,调色板以与 VobSub 相同的格式存储在编解码器额外数据中。在 DVD 中,调色板存储在 IFO 文件中,因此从转储的 VOB 文件读取时不可用。
此选项的格式是一个字符串,其中包含 16 个 24 位十六进制数字(不带 0x 前缀),以逗号分隔,例如
0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b
。- ifo_palette
指定从中获取全局调色板的 IFO 文件。(实验性)
- forced_subs_only
仅解码标记为强制的字幕条目。某些标题在同一轨道中具有强制和非强制字幕。将此标志设置为
1
将仅保留强制字幕。默认值为0
。
6.5 libzvbi-teletext
Libzvbi 允许 libavcodec 解码 DVB 图文电视页面和 DVB 图文电视字幕。配置期间需要 libzvbi 标头和库的存在。您需要使用 --enable-libzvbi
显式配置构建。
6.5.1 选项
- txt_page
要解码的图文电视页码列表。与指定列表不匹配的页面将被删除。您可以使用特殊的
*
字符串来匹配所有页面,或使用subtitle
来匹配所有字幕页面。默认值为 *。- txt_default_region
设置用于解码的默认字符集,一个介于 0 和 87 之间的值(请参阅 ETS 300 706,第 15 节,表 32)。默认值为 -1,这不会覆盖 libzvbi 默认值。对于某些无法发出正确字符集信号的旧版 1.0 传输,此选项是必需的。
- txt_chop_top
丢弃顶部图文电视行。默认值为 1。
- txt_format
指定解码字幕的格式。
- bitmap
默认格式,您应该将此用于图文电视页面,因为某些图形和颜色无法用简单文本甚至 ASS 表示。
- text
没有格式的简单基于文本的输出。
- ass
格式化的 ASS 输出,字幕页面和图文电视页面以不同的样式返回,字幕页面被剥离为文本,但尽力保持文本对齐和格式。
- txt_left
生成的位图的 X 偏移量,默认为 0。
- txt_top
生成的位图的 Y 偏移量,默认为 0。
- txt_chop_spaces
从生成的文本中删除前导和尾随空格,并删除空行。此选项对于基于图文电视的字幕很有用,其中空行可能出现在行的开头或结尾,或者由于双倍大小的图文电视字符,空行可能出现在字幕行之间。默认值为 1。
- txt_duration
设置解码的图文电视页面或字幕的显示持续时间(以毫秒为单位)。默认值为 -1,表示无限期或直到下一个字幕事件到来。
- txt_transparent
强制生成的图文电视位图的透明背景。默认值为 0,表示不透明背景。
- txt_opacity
设置图文电视背景的不透明度 (0-255)。如果未设置 txt_transparent,则仅影响起始框和结束框之间的字符,通常是字幕。如果设置了 txt_transparent,则默认值为 0,否则为 255。
7 编码器
编码器是 FFmpeg 中配置的元素,允许编码多媒体流。
当您配置 FFmpeg 构建时,默认情况下会启用所有受支持的本机编码器。需要外部库的编码器必须通过相应的 --enable-lib
选项手动启用。您可以使用配置选项 --list-encoders
列出所有可用的编码器。
您可以使用配置选项 --disable-encoders
禁用所有编码器,并使用选项 --enable-encoder=ENCODER
/ --disable-encoder=ENCODER
选择性地启用/禁用单个编码器。
ff* 工具的选项 -encoders
将显示已启用编码器的列表。
8 音频编码器
以下是一些当前可用的音频编码器的描述。
8.1 aac
高级音频编码 (AAC) 编码器。
此编码器是默认的 AAC 编码器,在 FFmpeg 中本机实现。
8.1.1 选项
- b
设置比特率,单位为比特/秒。设置此选项会自动激活恒定比特率 (CBR) 模式。如果未指定此选项,则设置为 128kbps。
- q
设置可变比特率 (VBR) 模式的质量。此选项仅在使用
ffmpeg
命令行工具时有效。对于库接口用户,请使用 global_quality。- cutoff
设置截止频率。如果未指定,则允许编码器动态调整截止频率,以提高低比特率的清晰度。
- aac_coder
设置 AAC 编码器编码方法。可能的值
- ‘twoloop’
双环搜索 (TLS) 方法。这是默认方法。
此方法首先根据频带阈值设置量化器,然后尝试通过从所有量化器添加或减去特定值并稍微调整某些单独的量化器来找到最佳组合。将根据是否启用 aac_is、aac_ms 和 aac_pns 来自行调整。
- ‘anmr’
平均噪声掩蔽比 (ANMR) 基于网格的解决方案。
这是一个实验性编码器,目前产生的质量较低,更不稳定,并且比默认的 twoloop 编码器慢,但具有潜力。目前不支持 aac_is 或 aac_pns 选项。目前不推荐。
- ‘fast’
恒定量化器方法。
使用 twoloop 算法的更便宜版本,该版本不尝试进行尽可能多的巧妙调整。在低比特率(小于 64kbps)下效果较差,但在较高比特率下更好且更快。
- aac_ms
设置中/侧编码模式。“auto”的默认值将自动将 M/S 用于将从这种编码中受益的频带。可以使用值“enable”为所有频带强制启用,这主要用于调试或使用“disable”禁用。
- aac_is
设置强度立体声编码工具的使用。默认情况下,它已启用,如果有利,将自动为类似的立体声频带对切换 IS。可以通过将值设置为“disable”来禁用以进行调试。
- aac_pns
使用感知噪声替换在解码过程中用不可察觉的白噪声替换低熵高频带。默认情况下,它已启用,但可以使用“disable”禁用以进行调试。
- aac_tns
启用使用多抽头 FIR 滤波器,该滤波器跨越高频带以隐藏编码过程中的量化噪声,并由解码器还原。除了减少高频范围内的不愉快伪影外,这还降低了高频带中的熵,并允许中低频带使用更多比特。默认情况下,它已启用,但可以通过将选项设置为“disable”来禁用以进行调试。
- aac_ltp
启用使用长期预测扩展,通过扩展频带中整个帧的恒定谐波峰值,提高极低带宽情况下的编码效率,例如语音或独奏钢琴音乐的编码。此选项由 profile:a aac_low 暗示,并且与 aac_pred 不兼容。与 -ar 结合使用以降低采样率。
- aac_pred
启用使用更传统的预测风格,其中传输的频谱系数被当前系数减去先前的“预测”系数的差值替换。理论上,有时在实践中,这可以提高中低比特率音频的质量。此选项暗示 aac_main 配置文件,并且与 aac_ltp 不兼容。
- profile
设置编码配置文件,可能的值
- ‘aac_low’
默认值,AAC “低复杂度” 配置文件。是最兼容的,并产生不错的质量。
- ‘mpeg2_aac_low’
等效于
-profile:a aac_low -aac_pns 0
。PNS 是随 MPEG4 规范引入的。- ‘aac_ltp’
长期预测配置文件,由 aac_ltp 选项启用并将启用该选项。在 MPEG4 中引入。
- ‘aac_main’
主类型预测配置文件,由 aac_pred 选项启用并将启用该选项。在 MPEG2 中引入。
如果未指定此选项,则设置为 ‘aac_low’。
8.2 ac3 和 ac3_fixed
AC-3 音频编码器。
这些编码器实现了 ATSC A/52:2010 和 ETSI TS 102 366 的一部分。
ac3 编码器使用浮点数学,而 ac3_fixed 编码器仅使用定点整数数学。这并不意味着一个总是更快,只是一个或另一个可能更适合特定系统。ac3_fixed 编码器不是任何输出格式的默认编解码器,因此必须使用选项 -acodec ac3_fixed
显式指定才能使用它。
8.2.1 AC-3 元数据
AC-3 元数据选项用于设置描述音频的参数,但在大多数情况下不会影响音频编码本身。某些选项确实直接影响或影响生成的码流的解码和播放,而另一些选项仅供参考。一些选项会向输出流添加位,否则这些位可以用于音频数据,因此会影响输出的质量。这些将在下面的选项列表中相应地指示,并附带注释。
这些参数在几个公开可用的文档中进行了详细描述。
8.2.1.1 元数据控制选项
- -per_frame_metadata 布尔值
允许逐帧元数据。指定编码器是否应检查每个帧的更改元数据。
- 0
初始化时设置的元数据值将用于流中的每个帧。(默认)
- 1
可以在编码每个帧之前更改元数据值。
8.2.1.2 降混音电平
- -center_mixlev 电平
中心混音电平。解码器在降混音到立体声时应应用于中心声道的增益量。仅当存在中心声道时,此字段才会写入码流。该值以比例因子指定。有 3 个有效值
- 0.707
应用 -3dB 增益
- 0.595
应用 -4.5dB 增益(默认)
- 0.500
应用 -6dB 增益
- -surround_mixlev 电平
环绕混音电平。解码器在降混音到立体声时应应用于环绕声道(多个)的增益量。仅当存在一个或多个环绕声道时,此字段才会写入码流。该值以比例因子指定。有 3 个有效值
- 0.707
应用 -3dB 增益
- 0.500
应用 -6dB 增益(默认)
- 0.000
静音环绕声道(多个)
8.2.1.3 音频制作信息
音频制作信息是描述混音环境的可选信息。无字段或两个字段都写入码流。
- -mixing_level 数字
混音电平。指定混音母带制作时制作环境中的峰值声压级 (SPL)。有效值为 80 到 111,或 -1 表示未知或未指示。默认值为 -1,但如果音频制作信息写入码流,则不能使用该值。因此,如果
room_type
选项不是默认值,则mixing_level
选项不能为 -1。- -room_type 类型
房间类型。描述在工作室或配音阶段的最终混音会话期间使用的均衡。大房间是具有行业标准 X 曲线均衡的配音阶段;小房间具有平坦的均衡。如果
mixing_level
选项和room_type
选项都具有默认值,则此字段不会写入码流。- 0
- notindicated
未指示(默认)
- 1
- large
大房间
- 2
- small
小房间
8.2.1.4 其他元数据选项
- -copyright 布尔值
版权指示符。指定此音频是否存在版权。
- 0
- off
不存在版权(默认)
- 1
- on
存在版权
- -dialnorm 值
对话归一化。指示节目的平均对话电平低于数字 100% 满量程 (0 dBFS) 的程度。此参数确定音频再现期间的电平偏移,该偏移将对话的平均音量设置为预设电平。目标是匹配节目源之间的音量电平。相对于源音量,-31dB 的值将导致音频再现期间没有音量电平变化。有效值是 -31 到 -1 范围内的整数,其中 -31 是默认值。
- -dsur_mode 模式
Dolby Surround 模式。指定立体声信号是否使用 Dolby Surround (Pro Logic)。仅当音频流为立体声时,此字段才会写入码流。使用此选项不表示编码器将实际应用 Dolby Surround 处理。
- 0
- notindicated
未指示(默认)
- 1
- off
未进行 Dolby Surround 编码
- 2
- on
已进行 Dolby Surround 编码
- -original 布尔值
原始码流指示符。指定此音频是否来自原始源而不是副本。
- 0
- off
非原始来源
- 1
- on
原始来源(默认)
8.2.2 扩展码流信息
扩展码流选项是 A/52:2010 标准附件 D 中指定的备用码流语法的一部分。它分为 2 部分。如果指定组中的任何一个参数,则该组中的所有值都将写入码流。默认值用于那些已写入但未指定的值。如果写入混音电平,则解码器将使用这些值,而不是 center_mixlev
和 surround_mixlev
选项中指定的值(如果它支持备用码流语法)。
8.2.2.1 扩展码流信息 - 第 1 部分
- -dmix_mode 模式
首选立体声降混音模式。允许用户选择 Lt/Rt (Dolby Surround) 或 Lo/Ro(普通立体声)作为首选立体声降混音模式。
- 0
- notindicated
未指示(默认)
- 1
- ltrt
首选 Lt/Rt 降混音
- 2
- loro
首选 Lo/Ro 降混音
- -ltrt_cmixlev 电平
Lt/Rt 中心混音电平。解码器在 Lt/Rt 模式下降混音到立体声时应应用于中心声道的增益量。
- 1.414
应用 +3dB 增益
- 1.189
应用 +1.5dB 增益
- 1.000
应用 0dB 增益
- 0.841
应用 -1.5dB 增益
- 0.707
应用 -3.0dB 增益
- 0.595
应用 -4.5dB 增益(默认)
- 0.500
应用 -6.0dB 增益
- 0.000
静音中心声道
- -ltrt_surmixlev 电平
Lt/Rt 环绕混音电平。解码器在 Lt/Rt 模式下降混音到立体声时应应用于环绕声道(多个)的增益量。
- 0.841
应用 -1.5dB 增益
- 0.707
应用 -3.0dB 增益
- 0.595
应用 -4.5dB 增益
- 0.500
应用 -6.0dB 增益(默认)
- 0.000
静音环绕声道(多个)
- -loro_cmixlev 电平
Lo/Ro 中心混音电平。解码器在 Lo/Ro 模式下降混音到立体声时应应用于中心声道的增益量。
- 1.414
应用 +3dB 增益
- 1.189
应用 +1.5dB 增益
- 1.000
应用 0dB 增益
- 0.841
应用 -1.5dB 增益
- 0.707
应用 -3.0dB 增益
- 0.595
应用 -4.5dB 增益(默认)
- 0.500
应用 -6.0dB 增益
- 0.000
静音中心声道
- -loro_surmixlev 电平
Lo/Ro 环绕混音电平。解码器在 Lo/Ro 模式下降混音到立体声时应应用于环绕声道(多个)的增益量。
- 0.841
应用 -1.5dB 增益
- 0.707
应用 -3.0dB 增益
- 0.595
应用 -4.5dB 增益
- 0.500
应用 -6.0dB 增益(默认)
- 0.000
静音环绕声道(多个)
8.2.2.2 扩展码流信息 - 第 2 部分
- -dsurex_mode 模式
Dolby Surround EX 模式。指示流是否使用 Dolby Surround EX(7.1 矩阵化为 5.1)。使用此选项不表示编码器将实际应用 Dolby Surround EX 处理。
- 0
- notindicated
未指示(默认)
- 1
- on
Dolby Surround EX 关闭
- 2
- off
Dolby Surround EX 开启
- -dheadphone_mode 模式
Dolby Headphone 模式。指示流是否使用 Dolby Headphone 编码(多声道矩阵化为 2.0 以用于耳机)。使用此选项不表示编码器将实际应用 Dolby Headphone 处理。
- 0
- notindicated
未指示(默认)
- 1
- on
Dolby Headphone 关闭
- 2
- off
Dolby Headphone 开启
- -ad_conv_type 类型
A/D 转换器类型。指示音频是否已通过 HDCD A/D 转换。
- 0
- standard
标准 A/D 转换器(默认)
- 1
- hdcd
HDCD A/D 转换器
8.2.3 其他 AC-3 编码选项
- -stereo_rematrixing 布尔值
立體聲重新矩陣化。 啟用/停用立體聲輸入的重新矩陣化功能。 這是一個可選的 AC-3 功能,透過選擇性地將左右聲道編碼為中/側聲道來提高品質。 此選項預設為啟用,強烈建議保持啟用狀態,除非用於測試目的。
- 截止頻率
設定低通截止頻率。 如果未指定,編碼器會根據各種其他編碼參數選擇預設值。
8.2.4 仅限浮点 AC-3 编码选项
這些選項僅適用於浮點編碼器,且由於對應功能未在定點編碼器中實作,因此不存在於定點編碼器。
- -channel_coupling 布林值
啟用/停用聲道耦合功能,這是一個可選的 AC-3 功能,透過將多個聲道的高頻資訊組合到單一聲道中來提高品質。 每個聲道的高頻資訊在頻域和時域中的準確性都會降低。 這樣可以將更多位元用於較低頻率,同時保留足夠的資訊來重建高頻。 此選項對於浮點編碼器預設為啟用,通常應保持啟用狀態,除非用於測試目的或提高編碼速度。
- -1
- 自動
由編碼器選擇 (預設)
- 0
- off
停用聲道耦合
- 1
- on
啟用聲道耦合
- -cpl_start_band 數字
耦合起始頻帶。 設定聲道耦合的起始頻帶,範圍從 1 到 15。 如果使用的值高於頻寬,則會將其減少到小於耦合終止頻帶 1 的值。 如果使用 auto,起始頻帶將由編碼器根據位元率、取樣率和聲道佈局來決定。 如果停用聲道耦合,則此選項無效。
- -1
- 自動
由編碼器選擇 (預設)
8.3 ffv1
FFv1 編碼器
8.3.1 选项
以下選項受 FFmpeg 的 FFv1 編碼器支援。
- context
設定上下文大小,0 (預設) 為小,1 為大。
- coder
設定編碼器,
- ‘rice’
Golomb rice 編碼器
- ‘range_def’
具有預設表格的範圍編碼器
- ‘range_tab’
具有自訂表格的範圍編碼器
- slicecrc
-1 (預設,自動), 1 使用 crc 且初始和最終狀態為零, 2 使用 crc 且初始和最終狀態為非零
- qtable
- ‘default’
預設, 自動
- ‘8bit’
使用 8 位元預設
- ‘greater8bit’
使用 >8 位元預設
8.4 flac
FLAC (Free Lossless Audio Codec) 編碼器
8.4.1 选项
以下選項受 FFmpeg 的 flac 編碼器支援。
- compression_level
設定壓縮等級,如果未明確設定其他選項,則會為許多其他選項選擇預設值。 有效值為 0 到 12,預設值為 5。
- frame_size
設定每聲道幀大小 (以樣本數為單位)。
- lpc_coeff_precision
設定 LPC 係數精度,有效值為 1 到 15,預設值為 15。
- lpc_type
設定第一階段 LPC 演算法
- ‘none’
未使用 LPC
- ‘fixed’
固定 LPC 係數
- ‘levinson’
- ‘cholesky’
- lpc_passes
LPC 分析期間用於 Cholesky 分解的次數
- min_partition_order
最小分割階數
- max_partition_order
最大分割階數
- prediction_order_method
- ‘estimation’
- ‘2level’
- ‘4level’
- ‘8level’
- ‘search’
暴力搜尋
- ‘log’
- ch_mode
聲道模式
- ‘auto’
模式由編碼器為每個幀自動選擇
- ‘indep’
聲道獨立編碼
- ‘left_side’
- ‘right_side’
- ‘mid_side’
- exact_rice_parameters
選擇 Rice 參數是精確計算還是近似計算。 如果設定為 1,則會精確選擇它們,這會稍微減慢程式碼速度並稍微提高壓縮率。
- multi_dim_quant
多維量化。 如果設定為 1,則在第一階段之後應用第二階段 LPC 演算法來微調係數。 這非常慢,但可以稍微提高壓縮率。
8.5 opus
Opus 編碼器。
這是 Opus 格式的原生 FFmpeg 編碼器。 目前,它正在開發中,僅實作編碼解碼器的 CELT 部分。 其品質通常較差,最佳情況下與 libopus 編碼器相當。
8.5.1 选项
- b
設定位元率 (以位元/秒為單位)。 如果未指定,它會使用聲道數和佈局來做出合理的猜測。
- opus_delay
設定最大延遲 (以毫秒為單位)。 低於 20 毫秒的延遲會非常快速地降低品質。
8.6 libfdk_aac
libfdk-aac AAC (進階音訊編碼) 編碼器封裝器。
libfdk-aac 庫基於 Android 專案中的 Fraunhofer FDK AAC 程式碼。
組態期間需要 libfdk-aac 標頭和庫。 您需要使用 --enable-libfdk-aac
明確組態建置。 該庫也與 GPL 不相容,因此如果您允許使用 GPL,則應使用 --enable-gpl --enable-nonfree --enable-libfdk-aac
進行組態。
此編碼器支援 AAC-HE 規範。
VBR 編碼 (透過 vbr 或 flags +qscale 選項啟用) 處於實驗階段,僅適用於某些參數組合。
僅 libfdk-aac 0.1.3 或更高版本才支援 7.1 音訊編碼。
如需更多資訊,請參閱 fdk-aac 專案:http://sourceforge.net/p/opencore-amr/fdk-aac/。
8.6.1 选项
以下選項對應到共用的 FFmpeg 編碼解碼器選項。
- b
設定位元率 (以位元/秒為單位)。 如果未明確指定位元率,則會根據選定的規範自動設定為合適的值。
如果啟用 VBR 模式,則忽略此選項。
- ar
设置音频采样率(单位为 Hz)。
- channels
設定音訊聲道數。
- flags +qscale
啟用固定品質、VBR (可變位元率) 模式。 請注意,當 vbr 值為正數時,VBR 會隱式啟用。
- cutoff
設定截止頻率。 如果未指定 (或明確設定為 0),它將使用庫自動計算的值。 預設值為 0。
- profile
設定音訊規範。
以下規範被識別
- ‘aac_low’
低複雜度 AAC (LC)
- ‘aac_he’
高效率 AAC (HE-AAC)
- ‘aac_he_v2’
高效率 AAC 版本 2 (HE-AACv2)
- ‘aac_ld’
低延遲 AAC (LD)
- ‘aac_eld’
增強型低延遲 AAC (ELD)
如果未指定,則設定為 ‘aac_low’。
以下是 libfdk_aac 編碼器的私有選項。
- afterburner
如果設定為 1,則啟用後燃器功能;如果設定為 0,則停用。 這可以提高品質,但也需要更高的處理能力。
預設值為 1。
- eld_sbr
如果設定為 1,則為 ELD 啟用 SBR (頻譜帶複製);如果設定為 0,則停用。
默认值为 0。
- eld_v2
如果設定為 1,則為 ELDv2 啟用 ELDv2 (用於 ELD 立體聲訊號的 LD-MPS 擴充功能);如果設定為 0,則停用。
請注意,當 fdk-aac 版本 (AACENCODER_LIB_VL0.AACENCODER_LIB_VL1.AACENCODER_LIB_VL2) > (4.0.0) 時,此選項可用。
默认值为 0。
- signaling
設定 SBR/PS 訊號傳輸樣式。
它可以採用以下值之一
- ‘default’
隱式選擇訊號傳輸 (預設為顯式階層式,如果停用全域標頭,則為隱式)
- ‘implicit’
隱式向後相容訊號傳輸
- ‘explicit_sbr’
顯式 SBR,隱式 PS 訊號傳輸
- ‘explicit_hierarchical’
顯式階層式訊號傳輸
默认值为 ‘default’。
- latm
如果設定為 1,則輸出 LATM/LOAS 封裝資料;如果設定為 0,則停用。
默认值为 0。
- header_period
設定 StreamMuxConfig 和 PCE 重複週期 (以幀為單位),以便在 LATM/LOAS 傳輸層中傳送頻內組態緩衝區。
必須是 16 位元非負整數。
默认值为 0。
- vbr
設定 VBR 模式,範圍從 1 到 5。 1 是最低品質 (但仍然相當好),而 5 是最高品質。 值為 0 將停用 VBR,並啟用 CBR (恆定位元率)。
目前只有 ‘aac_low’ 規範支援 VBR 編碼。
VBR 模式 1-5 大致對應於以下平均位元率
- ‘1’
32 kbps/聲道
- ‘2’
40 kbps/聲道
- ‘3’
48-56 kbps/聲道
- ‘4’
64 kbps/聲道
- ‘5’
約 80-96 kbps/聲道
默认值为 0。
- frame_length
設定音訊幀長度 (以樣本為單位)。 預設值為庫的內部預設值。 有關支援值的資訊,請參閱庫的文件。
8.6.2 范例
- 使用
ffmpeg
將音訊檔案轉換為 M4A (MP4) 容器中的 VBR AACffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a
- 使用
ffmpeg
將音訊檔案轉換為 CBR 64k kbps AAC,使用高效率 AAC 規範ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
8.7 liblc3
liblc3 LC3 (低複雜度通訊編碼解碼器) 編碼器封裝器。
組態期間需要 liblc3 標頭和庫。 您需要使用 --enable-liblc3
明確組態建置。
此編碼器支援藍牙 SIG LC3 編碼解碼器 (適用於 LE Audio 協定) 以及 LC3plus 的以下功能
- 2.5 和 5 毫秒的幀持續時間。
- 高解析度模式、48 KHz 和 96 kHz 取樣率。
如需更多資訊,請參閱 liblc3 專案:https://github.com/google/liblc3。
8.7.1 选项
以下選項對應到共用的 FFmpeg 編碼解碼器選項。
- b 位元率
設定位元率 (以位元/秒為單位)。 這將決定編碼幀的固定大小 (針對選定的幀持續時間)。
- ar 頻率
設定音訊取樣率 (以 Hz 為單位)。
- channels
設定音訊聲道數。
- frame_duration
設定音訊幀持續時間 (以毫秒為單位)。 預設值為 10 毫秒。 允許的幀持續時間為 2.5 毫秒、5 毫秒、7.5 毫秒和 10 毫秒。 LC3 (藍牙 LE Audio) 允許 7.5 毫秒和 10 毫秒;LC3plus 允許 2.5 毫秒、5 毫秒和 10 毫秒。
10 毫秒的幀持續時間在 LC3 和 LC3 plus 標準中都可用。 在此模式下,產生的位元串流可以參考為 LC3 或 LC3plus。
- high_resolution 布林值
如果設定為 1,則啟用高解析度模式。 高解析度模式適用於所有 LC3plus 幀持續時間以及 48 KHz 和 96 KHz 的取樣率。
編碼器會在較低的取樣率下自動關閉此模式,並在 96 KHz 下啟用它。
在高位元率下,應優先使用此模式。 在此模式下,音訊頻寬始終高達奈奎斯特頻率,而 48 KHz 的 LC3 將頻寬限制為 20 KHz。
8.8 libmp3lame
LAME (Lame Ain’t an MP3 Encoder) MP3 編碼器封裝器。
組態期間需要 libmp3lame 標頭和庫。 您需要使用 --enable-libmp3lame
明確組態建置。
有關定點 MP3 編碼器,請參閱 libshine,儘管品質較低。
8.8.1 选项
libmp3lame 封裝器支援以下選項。 選項的 lame
等效項列在括號中。
- b (-b)
設定 CBR 或 ABR 的位元率 (以位元/秒表示)。 LAME
bitrate
以千位元/秒表示。- q (-V)
設定 VBR 的恆定品質設定。 此選項僅在使用
ffmpeg
命令列工具時有效。 對於庫介面使用者,請使用 global_quality。- compression_level (-q)
設定演算法品質。 有效引數是 0-9 範圍內的整數,其中 0 表示最高品質但最慢,而 9 表示最快但產生最差的品質。
- cutoff (--lowpass)
設定低通截止頻率。 如果未指定,編碼器會動態調整截止頻率。
- reservoir
設定為 1 時,啟用位元儲存池的使用。 預設值為 1。 LAME 預設啟用此功能,但可以使用 --nores 選項覆寫。
- joint_stereo (-m j)
啟用編碼器 (在逐幀的基礎上) 使用 L/R 立體聲或中/側立體聲。 預設值為 1。
- abr (--abr)
設定為 1 時,啟用編碼器使用 ABR。
lame
--abr 設定目標位元率,而此選項僅告知 FFmpeg 使用 ABR,仍然依賴 b 來設定位元率。- copyright (-c)
設定為 1 時,設定 MPEG 音訊著作權標誌。 預設值為 0 (停用)。
- original (-o)
設定為 1 時,設定 MPEG 音訊原始標誌。 預設值為 1 (啟用)。
8.9 libopencore-amrnb
OpenCORE Adaptive Multi-Rate Narrowband 編碼器。
組態期間需要 libopencore-amrnb 標頭和庫。 您需要使用 --enable-libopencore-amrnb --enable-version3
明確組態建置。
這是一個僅限單聲道的編碼器。 官方上它僅支援 8000Hz 取樣率,但您可以透過將 strict 設定為 ‘unofficial’ 或更低來覆寫它。
8.9.1 选项
- b
設定位元率 (以位元/秒為單位)。 僅支援以下位元率,否則 libavcodec 將四捨五入到最接近的有效位元率。
- 4750
- 5150
- 5900
- 6700
- 7400
- 7950
- 10200
- 12200
- dtx
設定為 1 時,允許不連續傳輸 (產生舒適雜訊)。 預設值為 0 (停用)。
8.10 libopus
libopus Opus Interactive Audio Codec 編碼器封裝器。
組態期間需要 libopus 標頭和庫。 您需要使用 --enable-libopus
明確組態建置。
8.10.1 选项映射
大多數 libopus 選項都仿照 opus-tools 中的 opusenc
實用程式。 以下是一個選項對應圖表,描述了 libopus 封裝器支援的選項及其 opusenc
等效項 (在括號中)。
- b (bitrate)
設定位元率 (以位元/秒為單位)。 FFmpeg 的 b 選項以位元/秒表示,而
opusenc
的 bitrate 以千位元/秒表示。- vbr (vbr, hard-cbr, 和 cvbr)
設定 VBR 模式。 FFmpeg vbr 選項具有以下有效引數,
opusenc
等效選項 (在括號中)- ‘off (hard-cbr)’
使用恆定位元率編碼。
- ‘on (vbr)’
使用可變位元率編碼 (預設)。
- ‘constrained (cvbr)’
使用受約束的可變位元率編碼。
- compression_level (comp)
設定編碼演算法複雜度。 有效選項是 0-10 範圍內的整數。 0 提供最快的編碼但品質較低,而 10 提供最高的品質但最慢的編碼。 預設值為 10。
- frame_duration (framesize)
設定最大幀大小,或幀的持續時間 (以毫秒為單位)。 引數必須完全是以下之一:2.5、5、10、20、40、60。 較小的幀大小實現較低的延遲,但在給定的位元率下品質較低。 大於 20 毫秒的大小僅在相當低的位元率下才有趣。 預設值為 20 毫秒。
- packet_loss (expect-loss)
設定預期的封包遺失百分比。 預設值為 0。
- fec (n/a)
啟用頻內前向錯誤更正。 packet_loss 必須是非零值才能利用 - FEC「側資料」的頻率與預期的封包遺失成正比。 預設為停用。
- application (N.A.)
設定預期的應用程式類型。 有效選項如下
- ‘voip’
優先提高語音清晰度。
- ‘audio’
優先忠實於輸入 (預設)。
- ‘lowdelay’
透過停用語音最佳化模式,限制為僅最低延遲模式。
- cutoff (N.A.)
設定截止頻寬 (以 Hz 為單位)。 引數必須完全是以下之一:4000、6000、8000、12000 或 20000,分別對應於窄頻、中頻、寬頻、超寬頻和全頻。 預設值為 0 (停用截止頻寬)。 請注意,對於位元率 < 15 kbps,libopus 強制使用寬頻截止頻寬,除非使用僅限 CELT (application 設定為 ‘lowdelay’ ) 模式。
- mapping_family (mapping_family)
設定編碼器要使用的聲道對應族系。 預設值 -1 對於單聲道和立體聲輸入使用對應族系 0,對於其他輸入使用對應族系 1。 預設值也會停用 libopus 中的環繞遮罩和 LFE 頻寬最佳化,並要求輸入包含 8 個或更少的聲道。
其他值包括 0 (用於單聲道和立體聲)、1 (用於具有遮罩和 LFE 頻寬最佳化的環繞聲) 和 255 (用於具有未指定聲道佈局的獨立串流)。
- apply_phase_inv (N.A.) (需要 libopus >= 1.2)
如果設定為 0,則停用強度立體聲的相位反轉使用,從而提高單聲道混音的品質,但稍微降低正常立體聲品質。 預設值為 1 (啟用相位反轉)。
8.11 libshine
Shine 定點 MP3 編碼器封裝器。
Shine 是一個定點 MP3 編碼器。 它在沒有 FPU 的平台上 (例如 armel CPU) 以及某些手機和平板電腦上具有更好的效能。 但是,由於它更注重效能而不是品質,因此在品質方面無法與 LAME 和其他生產級編碼器相提並論。 此外,根據專案的首頁,此編碼器可能沒有錯誤,因為程式碼是在很久以前編寫的,並且該專案已停止至少 5 年。
此編碼器僅支援立體聲和單聲道輸入。 這也是僅限 CBR 的。
原始專案 (上次更新於 2007 年初) 位於 http://sourceforge.net/projects/libshine-fxp/。 我們僅支援 Savonet/Liquidsoap 專案更新的分支:https://github.com/savonet/shine。
組態期間需要 libshine 標頭和庫。 您需要使用 --enable-libshine
明確組態建置。
另請參閱 libmp3lame。
8.11.1 选项
libshine 封裝器支援以下選項。 選項的 shineenc
等效項列在括號中。
- b (-b)
設定 CBR 的位元率 (以位元/秒表示)。
shineenc
-b 選項以千位元/秒表示。
8.12 libtwolame
TwoLAME MP2 編碼器封裝器。
組態期間需要 libtwolame 標頭和庫。 您需要使用 --enable-libtwolame
明確組態建置。
8.12.1 选项
libtwolame 封裝器支援以下選項。 twolame
等效選項遵循 FFmpeg 選項,並在括號中。
- b (-b)
設定 CBR 的位元率 (以位元/秒表示)。
twolame
b 選項以千位元/秒表示。 預設值為 128k。- q (-V)
設定實驗性 VBR 支援的品質。 最大值範圍為 -50 到 50,有用範圍為 -10 到 10。 值越高,品質越好。 此選項僅在使用
ffmpeg
命令列工具時有效。 對於庫介面使用者,請使用 global_quality。- mode (--mode)
設定結果音訊的模式。 可能的值
- ‘auto’
根據輸入自動選擇模式。 這是預設值。
- ‘stereo’
立體聲
- ‘joint_stereo’
聯合立體聲
- ‘dual_channel’
雙聲道
- ‘mono’
單聲道
- psymodel (--psyc-mode)
設定編碼中要使用的心理聲學模型。 引數必須是 -1 到 4 之間的整數 (含)。 值越高,品質越好。 預設值為 3。
- energy_levels (--energy)
設定為 1 時,啟用能量等級擴充功能。 預設值為 0 (停用)。
- error_protection (--protect)
設定為 1 時,啟用 CRC 錯誤保護。 預設值為 0 (停用)。
- copyright (--copyright)
設定為 1 時,設定 MPEG 音訊著作權標誌。 預設值為 0 (停用)。
- original (--original)
設定為 1 時,設定 MPEG 音訊原始標誌。 預設值為 0 (停用)。
8.13 libvo-amrwbenc
VisualOn Adaptive Multi-Rate Wideband 編碼器。
組態期間需要 libvo-amrwbenc 標頭和庫。 您需要使用 --enable-libvo-amrwbenc --enable-version3
明確組態建置。
這是一個僅限單聲道的編碼器。 官方上它僅支援 16000Hz 取樣率,但您可以透過將 strict 設定為 ‘unofficial’ 或更低來覆寫它。
8.13.1 选项
- b
設定位元率 (以位元/秒為單位)。 僅支援以下位元率,否則 libavcodec 將四捨五入到最接近的有效位元率。
- ‘6600’
- ‘8850’
- ‘12650’
- ‘14250’
- ‘15850’
- ‘18250’
- ‘19850’
- ‘23050’
- ‘23850’
- dtx
設定為 1 時,允許不連續傳輸 (產生舒適雜訊)。 預設值為 0 (停用)。
8.14 libvorbis
libvorbis 編碼器封裝器。
組態期間需要 libvorbisenc 標頭和庫。 您需要使用 --enable-libvorbis
明確組態建置。
8.14.1 选项
libvorbis 封裝器支援以下選項。 選項的 oggenc
等效項列在括號中。
若要取得更準確和廣泛的 libvorbis 選項文件,請查閱 libvorbisenc 和 oggenc
的文件。 請參閱 http://xiph.org/vorbis/、http://wiki.xiph.org/Vorbis-tools 和 oggenc(1)。
- b (-b)
設定 ABR 的位元率 (以位元/秒表示)。
oggenc
-b 以千位元/秒表示。- q (-q)
設定 VBR 的恆定品質設定。 該值應為 -1.0 到 10.0 範圍內的浮點數。 值越高,品質越好。 預設值為 ‘3.0’。
此選項僅在使用
ffmpeg
命令列工具時有效。 對於庫介面使用者,請使用 global_quality。- cutoff (--advanced-encode-option lowpass_frequency=N)
設定截止頻寬 (以 Hz 為單位),值 0 表示停用截止頻寬。
oggenc
的相關選項以 kHz 表示。 預設值為 ‘0’ (停用截止頻寬)。- minrate (-m)
設定最小位元率 (以位元/秒表示)。
oggenc
-m 以千位元/秒表示。- maxrate (-M)
設定最大位元率 (以位元/秒表示)。
oggenc
-M 以千位元/秒表示。 這僅在 ABR 模式下有效。- iblock (--advanced-encode-option impulse_noisetune=N)
設定脈衝區塊的雜訊基底偏差。 該值是 -15.0 到 0.0 範圍內的浮點數。 負偏差指示編碼器特別注意編碼音訊中瞬態的清晰度。 更好的瞬態響應的代價是更高的位元率。
8.15 mjpeg
Motion JPEG 編碼器。
8.15.1 选项
- huffman
設定霍夫曼編碼策略。 可能的值
- ‘default’
使用預設的霍夫曼表。 這是預設策略。
- ‘optimal’
計算並使用最佳霍夫曼表。
8.16 wavpack
WavPack 無損音訊編碼器。
8.16.1 选项
wavpack
命令列公用程式的等效選項列在括號中。
8.16.1.1 共享选项
以下共用選項對此編碼器有效。 此處僅記錄有關此特定編碼器的特殊注意事項。 有關選項的一般含義,請參閱 編碼解碼器選項章節。
- frame_size (--blocksize)
對於此編碼器,此選項的範圍介於 128 和 131072 之間。 預設值根據取樣率和聲道數自動決定。
有關計算預設值的完整公式,請參閱 libavcodec/wavpackenc.c。
- compression_level (-f, -h, -hh, 和 -x)
8.16.1.2 私有选项
- joint_stereo (-j)
設定是否啟用聯合立體聲。 有效值為
- ‘on (1)’
強制中/側音訊編碼。
- ‘off (0)’
強制左/右音訊編碼。
- ‘auto’
讓編碼器自動決定。
- optimize_mono
設定是否啟用單聲道最佳化。 此選項僅對非單聲道串流有效。 可用值
- ‘on’
啟用
- ‘off’
停用
9 视频编码器
以下描述了一些目前可用的視訊編碼器。
9.1 a64_multi, a64_multi5
A64 / Commodore 64 多彩字元集編碼器。 a64_multi5
擴充了第 5 種顏色 (colram)。
9.2 Cinepak
Cinepak 又名 CVID 編碼器。 與 Windows 3.1 和老式 MacOS 相容。
9.2.1 选项
- g 整數
關鍵幀間隔。 關鍵幀至少每
-g
幀插入一次,有時更快。- q:v 整數
品質因數。 值越低越好。 值越高,位元率越低。 下表列出了使用
-g 100
編碼 akiyo_cif.y4m 時,不同-q:v
值的位元率-q:v 1
1918 kb/s-q:v 2
1735 kb/s-q:v 4
1500 kb/s-q:v 10
1041 kb/s-q:v 20
826 kb/s-q:v 40
553 kb/s-q:v 100
394 kb/s-q:v 200
312 kb/s-q:v 400
266 kb/s-q:v 1000
237 kb/s
- max_extra_cb_iterations 整數
最大額外碼本重新計算次數,次數越多越好,但速度越慢。
- skip_empty_cb 布林值
避免浪費位元組,忽略老式 MacOS 解碼器。
- max_strips 整數
- min_strips 整數
要使用的最小和最大條帶數。 更寬的範圍有時可以提高品質。 更多條帶通常品質更好,但成本更高。 較少的條帶往往會產生更多關鍵幀。 老式相容為 1..3。
- strip_number_adaptivity 整數
幀之間允許條帶數更改的程度。 值越高越好,但速度越慢。
9.3 GIF
GIF 圖像/動畫編碼器。
9.3.1 选项
- gifflags 整數
設定用於 GIF 編碼的標誌。
- offsetting
啟用圖片偏移。
預設為啟用。
- transdiff
啟用幀之間的透明度偵測。
預設為啟用。
- gifimage 整數
啟用每個幀編碼一個完整的 GIF 圖像,而不是動畫 GIF。
預設值為 0。
- global_palette 整數
在可行的情況下,將調色盤寫入全域 GIF 標頭。
如果停用,即使提供了全域調色盤,每個幀也始終會寫入調色盤。
預設值為 1。
9.4 Hap
Vidvox Hap 視訊編碼器。
9.4.1 选项
- format 整數
指定要編碼的 Hap 格式。
- hap
- hap_alpha
- hap_q
預設值為 hap。
- chunks 整數
指定要將幀分割成的區塊數,介於 1 到 64 之間。 這允許大型幀的多執行緒解碼,可能會以資料速率為代價。 編碼器可能會修改此值以均勻分割幀。
預設值為 1。
- compressor 整數
指定要使用的第二階段壓縮器。 如果設定為 none,則 chunks 將限制為 1,因為分塊的未壓縮幀沒有任何好處。
- none
- snappy
預設值為 snappy。
9.5 jpeg2000
原生 jpeg 2000 編碼器預設為有損,可以使用 -q:v
選項來設定編碼品質。 無損編碼可以使用 -pred 1
選擇。
9.5.1 选项
- format 整數
可以設定為
j2k
或jp2
(預設值),這使得可以儲存非 rgb pix_fmts。- tile_width 整數
設定圖塊寬度。 範圍是 1 到 1073741824。 預設值為 256。
- tile_height 整數
設定圖塊高度。 範圍是 1 到 1073741824。 預設值為 256。
- pred 整數
允許設定離散小波轉換 (DWT) 類型
- dwt97int (有損)
- dwt53 (無損)
預設值為
dwt97int
- sop 布林值
啟用此選項可在每個封包的開頭新增 SOP 標記。 預設為停用。
- eph 布林值
啟用此選項可在每個封包標頭的末尾新增 EPH 標記。 預設為停用。
- prog 整數
設定編碼器要使用的漸進順序。 可能的值為
- lrcp
- rlcp
- rpcl
- pcrl
- cprl
預設設定為
lrcp
。- layer_rates 字串
預設情況下,當未使用此選項時,壓縮是使用品質指標完成的。 此選項允許使用壓縮率進行壓縮。 可以指定每個層級的壓縮率。 層級
l
的壓縮率指定了總檔案大小的多少比例包含在前l
層中。使用範例
ffmpeg -i input.bmp -c:v jpeg2000 -layer_rates "100,10,1" output.j2k
這會壓縮影像以包含 3 個圖層,其中第一層中包含的資料將壓縮 1000 倍,在前兩個圖層中壓縮 100 倍,並且在使用所有 3 個圖層時應包含所有資料。
9.6 librav1e
rav1e AV1 編碼器封裝器。
組態期間需要 rav1e 標頭和庫。 您需要使用 --enable-librav1e
明確組態建置。
9.6.1 选项
- qmax
設定在使用位元率模式時要使用的最大量化器。
- qmin
設定在使用位元率模式時要使用的最小量化器。
- qp
使用量化器模式以給定的量化器 (0-255) 進行編碼。
- speed
選擇要用於編碼的速度預設 (0-10)。
- tiles
選擇要用於編碼的圖塊數。
- tile-rows
選擇要用於編碼的圖塊列數。
- tile-columns
選擇要用於編碼的圖塊欄數。
- rav1e-params
使用以 ":" 分隔的 key=value 對的清單來設定 rav1e 選項。 有關選項清單,請參閱
rav1e --help
。例如,使用 -rav1e-params 指定 librav1e 編碼選項
ffmpeg -i input -c:v librav1e -b:v 500K -rav1e-params speed=5:low_latency=true output.mp4
9.7 libaom-av1
libaom AV1 編碼器封裝器。
組態期間需要 libaom 標頭和庫。 您需要使用 --enable-libaom
明確組態建置。
9.7.1 选项
封裝器支援以下標準 libavcodec 選項
- b
設定目標位元率 (以位元/秒為單位)。 預設情況下,這將使用可變位元率模式。 如果 maxrate 和 minrate 也設定為相同的值,則它將使用恆定位元率模式,否則如果也設定了 crf,則它將使用受約束的品質模式。
- g keyint_min
設定關鍵幀放置。 GOP 大小設定關鍵幀之間的最大距離;如果為零,則輸出串流將僅為內部幀。 除非最小距離與 GOP 大小相同,否則將忽略最小距離,在這種情況下,關鍵幀將始終以固定的間隔出現。 預設未設定,因此如果沒有此選項,庫可以完全自由地選擇放置關鍵幀的位置。
- qmin qmax
設定最小/最大量化值。 有效範圍為 0 到 63 (警告:這與 AV1 實際使用的量化器值不符 - 除以 4 以將真實量化器值對應到此範圍)。 預設為最小/最大值 (無約束)。
- minrate maxrate bufsize rc_init_occupancy
設定速率控制緩衝參數。 如果未設定則不使用 - 預設為無約束的可變位元率。
- threads
設定編碼時要使用的執行緒數。 這可能需要同時設定 tiles 或 row-mt 選項才能實際完全使用指定的執行緒數。 預設為主機支援的硬體執行緒數。
- profile
設定編碼規範。 預設為使用與輸入的位元深度和色度子取樣相符的規範。
封裝器也有一些特定選項
- cpu-used
設定品質/編碼速度權衡。 有效範圍為 0 到 8,較高的數字表示更快的速度和更低的品質。 預設值為 1,這將是慢速和高品質。
- auto-alt-ref
啟用備用參考幀的使用。 預設為庫的內部預設值。
- arnr-max-frames (frames)
設定 altref 雜訊降低最大幀計數。 預設值為 -1。
- arnr-strength (strength)
設定 altref 雜訊降低濾波器強度。 範圍為 -1 到 6。 預設值為 -1。
- aq-mode (aq-mode)
設定自適應量化模式。 可能的值
- ‘none (0)’
已停用。
- ‘variance (1)’
基於變異數。
- ‘complexity (2)’
基於複雜度。
- ‘cyclic (3)’
循環刷新。
- tune (tune)
設定編碼器調整的失真指標。 預設值為
psnr
。- ‘psnr (0)’
- ‘ssim (1)’
- lag-in-frames
設定編碼器為前瞻目的在任何時間可以保留在執行中的最大幀數。 預設為庫的內部預設值。
- error-resilience
啟用錯誤復原功能
- default
提高對整個幀遺失的復原能力。
預設為停用。
- crf
設定恆定品質 (無目標位元率) 和受約束品質 (具有最大目標位元率) 模式的品質/大小權衡。 有效範圍為 0 到 63,較高的數字表示較低的品質和較小的輸出大小。 僅在設定時使用;預設情況下僅使用目標位元率。
- static-thresh
在區塊上設定變更閾值,低於該閾值的區塊將被編碼器跳過。 定義為任意單位的非負整數,預設為零 (不跳過任何區塊)。
- drop-threshold
設定在接近速率控制邊界時丟棄幀的閾值。 定義為目標緩衝區的百分比 - 當速率控制緩衝區降至此百分比以下時,將丟棄幀,直到它重新填充到閾值以上。 預設為零 (不丟棄任何幀)。
- denoise-noise-level (level)
要為紋理合成移除的雜訊量。 如果未設定此選項或設定為 0,則停用紋理合成。
- denoise-block-size (pixels)
用於紋理合成的去雜訊的區塊大小。 如果未設定,AV1 編碼解碼器會使用預設值 32。
- undershoot-pct (pct)
設定資料速率下衝 (最小) 百分比 (相對於目標位元率)。 範圍為 -1 到 100。 預設值為 -1。
- overshoot-pct (pct)
設定資料速率過衝 (最大) 百分比 (相對於目標位元率)。 範圍為 -1 到 1000。 預設值為 -1。
- minsection-pct (pct)
GOP 位元率與目標位元率的最小百分比變異。 如果未設定 minsection-pct,libaomenc 封裝器會將其計算為:
(minrate * 100 / bitrate)
。 範圍為 -1 到 100。 預設值為 -1 (未設定)。- maxsection-pct (pct)
GOP 位元率與目標位元率的最大百分比變異。 如果未設定 maxsection-pct,libaomenc 封裝器會將其計算為:
(maxrate * 100 / bitrate)
。 範圍為 -1 到 5000。 預設值為 -1 (未設定)。- frame-parallel (布林值)
啟用幀並行解碼功能。 預設為 true。
- tiles
設定用於編碼輸入視訊的圖塊數,以欄 x 列表示。 較大的數字允許在編碼和解碼中實現更高的並行性,但可能會降低編碼效率。 預設為輸入視訊大小所需的最小圖塊數 (對於最大和包括 4K 的大小,這是 1x1 (即,單個圖塊))。
- tile-columns tile-rows
將圖塊數設定為圖塊行數和列數的 log2。 為與 libvpx/VP9 相容而提供。
- row-mt (需要 libaom >= 1.0.0-759-g90a15f4f2)
啟用基於列的多執行緒處理。 預設為停用。
- enable-cdef (布林值)
啟用約束方向增強濾波器。 libaom-av1 編碼器預設啟用 CDEF。
- enable-restoration (布林值)
啟用迴路修復濾波器。 libaom-av1 的預設值為 true。
- enable-global-motion (布林值)
啟用全域運動用於區塊預測。 預設值為 true。
- enable-intrabc (布林值)
啟用區塊複製模式用於內部區塊預測。 此模式適用於螢幕內容。 預設值為 true。
- enable-rect-partitions (布林值) (需要 libaom >= v2.0.0)
啟用矩形分割。 預設值為 true。
- enable-1to4-partitions (布林值) (需要 libaom >= v2.0.0)
啟用 1:4/4:1 分割。 預設值為 true。
- enable-ab-partitions (布林值) (需要 libaom >= v2.0.0)
啟用 AB 形狀分割。 預設值為 true。
- enable-angle-delta (布林值) (需要 libaom >= v2.0.0)
啟用角度增量內部預測。 預設值為 true。
- enable-cfl-intra (布林值) (需要 libaom >= v2.0.0)
啟用從亮度內部預測的色度。 預設值為 true。
- enable-filter-intra (布林值) (需要 libaom >= v2.0.0)
啟用濾波器內部預測器。 預設值為 true。
- enable-intra-edge-filter (布林值) (需要 libaom >= v2.0.0)
啟用內部邊緣濾波器。 預設值為 true。
- enable-smooth-intra (布林值) (需要 libaom >= v2.0.0)
啟用平滑內部預測模式。 預設值為 true。
- enable-paeth-intra (布林值) (需要 libaom >= v2.0.0)
在內部預測中啟用 paeth 預測器。 預設值為 true。
- enable-palette (布林值) (需要 libaom >= v2.0.0)
啟用調色盤預測模式。 預設值為 true。
- enable-flip-idtx (布林值) (需要 libaom >= v2.0.0)
啟用擴充的轉換類型,包括 FLIPADST_DCT、DCT_FLIPADST、FLIPADST_FLIPADST、ADST_FLIPADST、FLIPADST_ADST、IDTX、V_DCT、H_DCT、V_ADST、H_ADST、V_FLIPADST、H_FLIPADST。 預設值為 true。
- enable-tx64 (布林值) (需要 libaom >= v2.0.0)
啟用 64 點轉換。 預設值為 true。
- reduced-tx-type-set (布林值) (需要 libaom >= v2.0.0)
使用減少的轉換類型集。 預設值為 false。
- use-intra-dct-only (布林值) (需要 libaom >= v2.0.0)
僅對 INTRA 模式使用 DCT。 預設值為 false。
- use-inter-dct-only (布林值) (需要 libaom >= v2.0.0)
僅對 INTER 模式使用 DCT。 預設值為 false。
- use-intra-default-tx-only (布林值) (需要 libaom >= v2.0.0)
僅對 INTRA 模式使用預設轉換。 預設值為 false。
- enable-ref-frame-mvs (布林值) (需要 libaom >= v2.0.0)
啟用時間 MV 預測。 預設值為 true。
- enable-reduced-reference-set (布林值) (需要 libaom >= v2.0.0)
使用減少的單一和複合參考集。 預設值為 false。
- enable-obmc (布林值) (需要 libaom >= v2.0.0)
啟用 obmc。 預設值為 true。
- enable-dual-filter (布林值) (需要 libaom >= v2.0.0)
啟用雙濾波器。 預設值為 true。
- enable-diff-wtd-comp (布林值) (需要 libaom >= v2.0.0)
啟用差異加權複合。 預設值為 true。
- enable-dist-wtd-comp (布林值) (需要 libaom >= v2.0.0)
啟用距離加權複合。 預設值為 true。
- enable-onesided-comp (布林值) (需要 libaom >= v2.0.0)
啟用單邊複合。 預設值為 true。
- enable-interinter-wedge (布林值) (需要 libaom >= v2.0.0)
啟用 interinter 楔形複合。 預設值為 true。
- enable-interintra-wedge (布林值) (需要 libaom >= v2.0.0)
啟用 interintra 楔形複合。 預設值為 true。
- enable-masked-comp (布林值) (需要 libaom >= v2.0.0)
啟用遮罩複合。 預設值為 true。
- enable-interintra-comp (布林值) (需要 libaom >= v2.0.0)
啟用 interintra 複合。 預設值為 true。
- enable-smooth-interintra (布林值) (需要 libaom >= v2.0.0)
啟用平滑 interintra 模式。 預設值為 true。
- aom-params
使用以 ":" 分隔的 key=value 對的清單來設定 libaom 選項。 有關支援選項的清單,請參閱
aomenc --help
中的「AV1 Specific Options」章節。例如,使用 -aom-params 指定 libaom 編碼選項
ffmpeg -i input -c:v libaom-av1 -b:v 500K -aom-params tune=psnr:enable-tpl-model=1 output.mp4
9.8 libsvtav1
SVT-AV1 編碼器封裝器。
組態期間需要 SVT-AV1 標頭和庫。 您需要使用 --enable-libsvtav1
明確組態建置。
9.8.1 选项
- profile
設定編碼規範。
- ‘main’
- ‘high’
- ‘professional’
- level
設定操作點等級。 例如:’4.0’
- hielevel
設定階層式預測等級。
- ‘3level’
- ‘4level’
這是預設值。
- tier
設定操作點層級。
- ‘main’
這是預設值。
- ‘high’
- qmax
設定在使用位元率模式時要使用的最大量化器。
- qmin
設定在使用位元率模式時要使用的最小量化器。
- crf
crf
- qp
用於 crf 速率控制模式的恆定速率因數值 (0-63)。
- sc_detection
啟用場景變更偵測。
- la_depth
設定前瞻幀數 (0-120)。
- preset
設定品質速度權衡,範圍為 0 到 13。 值越高速度越快,但品質越低。
- tile_rows
設定要使用的圖塊列數的 log2 (0-6)。
- tile_columns
設定要使用的圖塊欄數的 log2 (0-4)。
- svtav1-params
使用以 ":" 分隔的 key=value 對的清單來設定 SVT-AV1 選項。 有關接受參數的清單,請參閱 SVT-AV1 編碼器使用者指南。
9.9 libjxl
libjxl JPEG XL 編碼器封裝器。
組態期間需要 libjxl 標頭和庫。 您需要使用 --enable-libjxl
明確組態建置。
9.9.1 选项
libjxl 封裝器支援以下選項
- distance
設定目標 Butteraugli 距離。 這是一個品質設定:較小的距離產生較高的品質,距離 = 1.0 大致相當於攝影內容的 libjpeg 品質 90。 設定距離 = 0.0 會產生真正的無損編碼。 有效值範圍介於 0.0 和 15.0 之間,合理的數值很少超過 5.0。 設定距離 = 0.1 通常可以為大多數輸入實現透明度。 預設值為 1.0。
- effort
設定使用的編碼努力程度。 較高的努力程度值會產生更一致的品質,並且通常會產生更好的品質/bpp 曲線,但代價是需要更多的 CPU 時間。 有效值範圍為 1 到 9,預設值為 7。
- modular
強制編碼器使用模組化模式,而不是自動選擇。 預設值為有損編碼使用 VarDCT,無損編碼使用模組化。 VarDCT 通常優於用於有損編碼的模組化,但不支援無損編碼。
9.10 libkvazaar
Kvazaar H.265/HEVC 編碼器。
組態期間需要 libkvazaar 標頭和庫。 您需要使用 --enable-libkvazaar 明確組態建置。
9.10.1 选项
- b
設定目標視訊位元率 (以位元/秒為單位) 並啟用速率控制。
- kvazaar-params
將 kvazaar 參數設定為以逗號 (,) 分隔的 name=value 對的清單。 有關選項清單,請參閱 kvazaar 文件。
9.11 libopenh264
Cisco libopenh264 H.264/MPEG-4 AVC 編碼器封裝器。
此編碼器需要組態期間存在 libopenh264 標頭和庫。 您需要使用 --enable-libopenh264
明確組態建置。 使用 pkg-config
偵測庫。
有關庫的更多資訊,請參閱 http://www.openh264.org。
9.11.1 选项
以下 FFmpeg 全域選項會影響 libopenh264 編碼器的組態。
- b
設定位元率 (以每秒位元數為單位)。
- g
設定 GOP 大小。
- maxrate
設定最大位元率 (以每秒位元數為單位)。
- flags +global_header
在位元串流中設定全域標頭。
- slices
設定切片數,用於並行編碼。 預設值為 0。 這僅在 slice_mode 設定為 ‘fixed’ 時使用。
- loopfilter
啟用迴路濾波器 (如果設定為 1,則自動啟用)。 若要停用,請設定值為 0。
- profile
設定規範限制。 如果設定為 ‘main’ 值,則啟用 CABAC (將
SEncParamExt.iEntropyCodingModeFlag
標誌設定為 1)。- max_nal_size
設定最大 NAL 大小 (以位元組為單位)。
- allow_skip_frames
如果設定為 1,則允許跳過幀以達到目標位元率。
9.12 libtheora
libtheora Theora 編碼器封裝器。
組態期間需要 libtheora 標頭和庫。 您需要使用 --enable-libtheora
明確組態建置。
有關 libtheora 專案的更多資訊,請參閱 http://www.theora.org/。
9.12.1 选项
以下全域選項對應到影響編碼串流的品質和位元率的內部 libtheora 選項。
- b
設定 CBR (恆定位元率) 模式的視訊位元率 (以位元/秒為單位)。 如果啟用 VBR (可變位元率) 模式,則忽略此選項。
- flags
用於透過 qscale 標誌啟用恆定品質模式 (VBR) 編碼,以及啟用
pass1
和pass2
模式。- g
設定 GOP 大小。
- global_quality
以 lambda 單位將全域品質設定為整數。
僅當使用
flags +qscale
啟用 VBR 模式時才相關。 該值透過除以FF_QP2LAMBDA
轉換為 QP 單位,裁剪到 [0 - 10] 範圍,然後乘以 6.3 以獲得原生 libtheora 範圍 [0-63] 中的值。 值越高,對應的品質越高。- q
當設定為非負值時,啟用 VBR 模式,並將恆定品質值設定為 QP 單位中的雙精度浮點值。
該值裁剪到 [0-10] 範圍,然後乘以 6.3 以獲得原生 libtheora 範圍 [0-63] 中的值。
此選項僅在使用
ffmpeg
命令列工具時有效。 對於庫介面使用者,請使用 global_quality。
9.12.2 范例
- 使用
ffmpeg
設定最大恆定品質 (VBR) 編碼ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg
- 使用
ffmpeg
轉換 CBR 1000 kbps Theora 視訊串流ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg
9.13 libvpx
透過 libvpx 支援 VP8/VP9 格式。
組態期間需要 libvpx 標頭和庫。 您需要使用 --enable-libvpx
明確組態建置。
9.13.1 选项
libvpx 封裝器支援以下選項。 vpxenc
等效選項或值列在括號中,以便於遷移。
為了減少文件重複,此處僅記錄私有選項和一些需要特別注意的其他選項。 有關未記錄的通用選項的文件,請參閱 編碼解碼器選項章節。
若要取得有關 libvpx 選項的更多文件,請調用命令 ffmpeg -h encoder=libvpx
、ffmpeg -h encoder=libvpx-vp9
或 vpxenc --help
。 更多資訊可在 libvpx API 文件中找到。
- b (target-bitrate)
設定位元率 (以位元/秒為單位)。 請注意,FFmpeg 的 b 選項以位元/秒表示,而
vpxenc
的 target-bitrate 以千位元/秒表示。- g (kf-max-dist)
- keyint_min (kf-min-dist)
- qmin (min-q)
最小 (最佳品質) 量化器。
- qmax (max-q)
最大 (最差品質) 量化器。 可以逐幀更改。
- bufsize (buf-sz, buf-optimal-sz)
設定速率控制緩衝區大小 (以位元為單位)。 請注意,
vpxenc
的選項以毫秒為單位指定,libvpx 封裝器按如下方式轉換此值:buf-sz = bufsize * 1000 / bitrate
,buf-optimal-sz = bufsize * 1000 / bitrate * 5 / 6
。- rc_init_occupancy (buf-initial-sz)
設定解碼開始前應載入到 rc 緩衝區中的位元數。 請注意,
vpxenc
的選項以毫秒為單位指定,libvpx 封裝器按如下方式轉換此值:rc_init_occupancy * 1000 / bitrate
。- undershoot-pct
設定資料速率下衝 (最小) 百分比 (相對於目標位元率)。
- overshoot-pct
設定資料速率過衝 (最大) 百分比 (相對於目標位元率)。
- skip_threshold (drop-frame)
- qcomp (bias-pct)
- maxrate (maxsection-pct)
設定 GOP 最大位元率 (以位元/秒為單位)。 請注意,
vpxenc
的選項指定為目標位元率的百分比,libvpx 封裝器按如下方式轉換此值:(maxrate * 100 / bitrate)
。- minrate (minsection-pct)
設定 GOP 最小位元率 (以位元/秒為單位)。 請注意,
vpxenc
的選項指定為目標位元率的百分比,libvpx 封裝器按如下方式轉換此值:(minrate * 100 / bitrate)
。- minrate, maxrate, b end-usage=cbr
(minrate == maxrate == bitrate)
.- crf (end-usage=cq, cq-level)
- tune (tune)
- ‘psnr (psnr)’
- ‘ssim (ssim)’
- quality, deadline (deadline)
- ‘best’
使用最佳品質期限。 命名不佳且速度很慢,應避免使用此選項,因為它可能產生比良好品質更差的品質輸出。
- ‘good’
使用良好品質期限。 將 cpu-used 選項一起使用時,這是速度和品質之間的良好權衡。
- ‘realtime’
使用即時品質期限。
- speed, cpu-used (cpu-used)
設定品質/速度比率修飾符。 較高的值會加快編碼速度,但會犧牲品質。
- nr (noise-sensitivity)
- static-thresh
在區塊上設定變更閾值,低於該閾值的區塊將被編碼器跳過。
- slices (token-parts)
請注意,FFmpeg 的 slices 選項給出分割區的總數,而
vpxenc
的 token-parts 作為log2(分割區)
給出。- max-intra-rate
將最大 I 幀位元率設定為目標位元率的百分比。 值 0 表示無限制。
- force_key_frames
VPX_EFLAG_FORCE_KF
- 備用參考幀相關
- auto-alt-ref
啟用備用參考幀的使用 (僅限 2-pass)。 大於 1 的值啟用多層備用參考幀 (僅限 VP9)。
- arnr-maxframes
設定 altref 雜訊降低最大幀計數。
- arnr-type
設定 altref 雜訊降低濾波器類型:向後、向前、居中。
- arnr-strength
設定 altref 雜訊降低濾波器強度。
- rc-lookahead, lag-in-frames (lag-in-frames)
設定幀類型和速率控制的前瞻幀數。
- min-gf-interval
設定最小黃金/備用參考幀間隔 (僅限 VP9)。
- error-resilient
啟用錯誤復原功能。
- sharpness 整數
以降低 PSNR 為代價提高清晰度。 有效範圍為 [0, 7]。
- ts-parameters
使用以 ":" 分隔的 key=value 對的清單來設定時間可擴展性組態。 例如,使用
ffmpeg
指定時間可擴展性參數ffmpeg -i INPUT -c:v libvpx -ts-parameters ts_number_layers=3:\ ts_target_bitrate=250,500,1000:ts_rate_decimator=4,2,1:\ ts_periodicity=4:ts_layer_id=0,2,1,2:ts_layering_mode=3 OUTPUT
以下是每個參數的簡要說明,有關更多詳細資訊,請參閱
vpx/vpx_encoder.h
中的struct vpx_codec_enc_cfg
。- ts_number_layers
時間編碼層數。
- ts_target_bitrate
每個時間層的目標位元率 (以 kbps 為單位)。 (位元率應包含較低的時間層)。
- ts_rate_decimator
每個時間層的幀速率抽取因數。
- ts_periodicity
定義幀時間層成員資格的序列長度。
- ts_layer_id
定義幀到時間層的成員資格的範本。
- ts_layering_mode
(可選) 從一組預定義的時間分層模式中選擇時間結構。 目前支援以下選項。
- 0
內部未提供時間分層標誌,依賴於使用
AVFrame
中的metadata
欄位傳入標誌,並具有以下鍵。- vp8-flags
設定傳遞到編碼器的標誌,以指示目前幀的參考方案。 有關更多詳細資訊,請參閱
vpx/vpx_encoder.h
中的函數vpx_codec_encode
。- temporal_id
明確設定要編碼的目前幀的時間 ID。
- 2
兩個時間層。 0-1...
- 3
三個時間層。 0-2-1-2...;使用單一參考幀。
- 4
與選項 "3" 相同,不同之處在於時間週期內兩個時間層 2 幀之間存在依賴關係。
- VP8 特定選項
- screen-content-mode
螢幕內容模式,以下之一:0 (關閉)、1 (螢幕)、2 (螢幕具有更積極的速率控制)。
- VP9 特定選項
- lossless
啟用無損模式。
- tile-columns
設定要使用的圖塊欄數。 請注意,這是作為
log2(tile_columns)
給出的。 例如,8 個圖塊欄將透過將 tile-columns 選項設定為 3 來請求。- tile-rows
設定要使用的圖塊列數。 請注意,這是作為
log2(tile_rows)
給出的。 例如,4 個圖塊列將透過將 tile-rows 選項設定為 2 來請求。- frame-parallel
啟用幀並行解碼功能。
- aq-mode
設定自適應量化模式 (0:關閉 (預設)、1:變異數 2:複雜度、3:循環刷新、4:equator360)。
- colorspace color-space
設定輸入色彩空間。 VP9 位元串流支援發出以下色彩空間訊號
- ‘rgb’ sRGB
- ‘bt709’ bt709
- ‘unspecified’ unknown
- ‘bt470bg’ bt601
- ‘smpte170m’ smpte170
- ‘smpte240m’ smpte240
- ‘bt2020_ncl’ bt2020
- row-mt 布林值
啟用基於列的多執行緒處理。
- tune-content
設定內容類型:預設 (0)、螢幕 (1)、影片 (2)。
- corpus-complexity
Corpus VBR 模式是標準 VBR 的變體,其中傳入複雜度分佈中點,而不是針對特定剪輯或區塊計算。
有效範圍為 [0, 10000]。 0 (預設) 使用標準 VBR。
- enable-tpl 布林值
啟用時間依賴模型。
- ref-frame-config
使用逐幀元數據,設定
vpx/vp8cx.h
中vpx_svc_ref_frame_config_t
結構的成員,以精細控制參考方案和幀緩衝區管理。
使用以 ":" 分隔的 key=value 對的清單。 例如,av_dict_set(&av_frame->metadata, "ref-frame-config", \ "rfc_update_buffer_slot=7:rfc_lst_fb_idx=0:rfc_gld_fb_idx=1:rfc_alt_fb_idx=2:rfc_reference_last=0:rfc_reference_golden=0:rfc_reference_alt_ref=0");
- rfc_update_buffer_slot
指示要更新的緩衝區插槽號碼
- rfc_update_last
指示是否更新 LAST 幀
- rfc_update_golden
指示是否更新 GOLDEN 幀
- rfc_update_alt_ref
指示是否更新 ALT_REF 幀
- rfc_lst_fb_idx
LAST 幀緩衝區索引
- rfc_gld_fb_idx
GOLDEN 幀緩衝區索引
- rfc_alt_fb_idx
ALT_REF 幀緩衝區索引
- rfc_reference_last
指示是否參考 LAST 幀
- rfc_reference_golden
指示是否參考 GOLDEN 幀
- rfc_reference_alt_ref
指示是否參考 ALT_REF 幀
- rfc_reference_duration
指示幀持續時間
有關 libvpx 的更多資訊,請參閱:http://www.webmproject.org/
9.14 libvvenc
VVenC H.266/VVC 編碼器封裝器。
此編碼器需要組態期間存在 libvvenc 標頭和庫。 您需要使用 --enable-libvvenc 明確組態建置。
VVenC 專案網站位於 https://github.com/fraunhoferhhi/vvenc。
9.14.1 支持的像素格式
VVenC 僅支援 10 位元色彩空間作為輸入。 但內部 (編碼) 位元深度可以在執行時設定為 8 位元或 10 位元。
9.14.2 选项
- b
設定目標視訊位元率。
- g
設定 GOP 大小。 目前支援 g=1 (僅限內部幀) 或預設值。
- preset
設定 VVenC 預設值。
- levelidc
設定等級 idc。
- tier
設定 vvc 層級。
- qp
設定恆定量化參數。
- subopt 布林值
設定主觀 (感知動機) 最佳化。 預設值為 1 (開啟)。
- bitdepth8 布林值
設定 8 位元編碼模式,而不是使用 10 位元。 預設值為 0 (關閉)。
- period
設定 (內部幀) 刷新週期 (以秒為單位)。
- vvenc-params
使用以 ":" 分隔的 key=value 配對的清單來設定 vvenc 選項。 有關選項清單,請參閱
vvencapp --fullhelp
或vvencFFapp --fullhelp
。例如,選項可以提供為
intraperiod=64:decodingrefreshtype=idr:poc0idr=1:internalbitdepth=8
例如,編碼選項可以使用 -vvenc-params 提供
ffmpeg -i input -c:v libvvenc -b 1M -vvenc-params intraperiod=64:decodingrefreshtype=idr:poc0idr=1:internalbitdepth=8 output.mp4
9.15 libwebp
libwebp WebP 圖像編碼器封裝器
libwebp 是 Google 的 WebP 圖像官方編碼器。 它可以以有損或無損模式編碼。 有損圖像本質上是 VP8 幀的封裝器。 無損圖像是由 Google 開發的單獨編碼解碼器。
9.15.1 像素格式
目前,由於格式和 libwebp 的限制,libwebp 僅支援有損的 YUV420 和無損的 RGB。 兩種模式都支援 Alpha。 由於 API 限制,如果在有損編碼時傳入 RGB,或在無損編碼時傳入 YUV,則像素格式將使用 libwebp 中的函數自動轉換。 這並非理想情況,僅為方便起見而完成。
9.15.2 选项
- -lossless 布林值
啟用/停用無損模式的使用。 預設值為 0。
- -compression_level 整數
對於有損,這是一種品質/速度權衡。 較高的值在給定大小下提供更好的品質,但代價是增加編碼時間。 對於無損,這是一種大小/速度權衡。 較高的值在增加編碼時間的代價下提供更小的大小。 更具體地說,它控制使用的額外演算法和壓縮工具的數量,並改變這些工具的組合。 這對應於 libwebp 中的 method 選項。 有效範圍為 0 到 6。 預設值為 4。
- -quality 浮點數
對於有損編碼,這控制圖像品質。 對於無損編碼,這控制壓縮中付出的努力和時間。 範圍為 0 到 100。 預設值為 75。
- -preset 類型
組態預設。這會根據影像的一般類型執行一些自動設定。
- none
不要使用預設值。
- default
使用編碼器預設值。
- 圖片
數位圖片,例如人像、室內拍攝
- 照片
戶外照片,具有自然光線
- 繪圖
手繪或線條繪圖,具有高對比度細節
- 圖示
小型彩色影像
- text
類似文字
9.16 libx264, libx264rgb
x264 H.264/MPEG-4 AVC 編碼器封裝器。
此編碼器在組態期間需要 libx264 標頭和函式庫。您需要使用 --enable-libx264
明確組態建置。
libx264 支援令人印象深刻的功能數量,包括 8x8 和 4x4 適應性空間轉換、適應性 B 畫面放置、CAVLC/CABAC 熵編碼、交錯(MBAFF)、無損模式、用於細節保留的心理視覺最佳化(適應性量化、psy-RD、psy-trellis)。
許多 libx264 編碼器選項已對應到 FFmpeg 全域編解碼器選項,而獨特的編碼器選項則透過私有選項提供。此外,x264opts 和 x264-params 私有選項允許使用者傳遞 libx264 x264_param_parse
函式接受的 key=value 元組列表。
x264 專案網站位於 http://www.videolan.org/developers/x264.html。
libx264rgb 編碼器與 libx264 相同,只是它接受封裝的 RGB 像素格式作為輸入,而不是 YUV。
9.16.1 支持的像素格式
x264 支援 8 位元到 10 位元色彩空間。確切的位元深度在 x264 的組態時控制。
9.16.2 选项
libx264 封裝器支援以下選項。括號中列出 x264
等效選項或值,以便於遷移。
為了減少文件重複,此處僅記錄私有選項和一些需要特別注意的其他選項。 有關未記錄的通用選項的文件,請參閱 編碼解碼器選項章節。
若要取得更準確和廣泛的 libx264 選項文件,請調用命令 x264 --fullhelp
或查閱 libx264 文件。
在下面的列表中,請注意,如果存在直接對應,則在 libavcodec 相應名稱後面的括號中顯示 x264
選項名稱。
- b (bitrate)
設定位元率,單位為位元/秒。請注意,FFmpeg 的 b 選項以位元/秒表示,而
x264
的 bitrate 以千位元/秒表示。- bf (bframes)
I 畫面和 P 畫面之間的 B 畫面數量
- g (keyint)
最大 GOP 大小
- qmin (qpmin)
最小量化器比例
- qmax (qpmax)
最大量化器比例
- qdiff (qpstep)
量化器比例之間的最大差異
- qblur (qblur)
量化器曲線模糊
- qcomp (qcomp)
量化器曲線壓縮因子
- refs (ref)
每個 P 畫面可以使用的參考畫面數量。範圍是 0-16。
- level (level)
在值為正數的情況下,設定
x264_param_t.i_level_idc
值,否則將忽略它。可以使用
AVCodecContext
API 設定此值(例如,直接設定AVCodecContext
值),並將其指定為對應等級上對應的整數(例如,值 31 對應於 H.264 等級 IDC "3.1",如x264_levels
表中所定義)。當設定為非正值時,將忽略它。或者,它可以設定為私有選項,覆寫
AVCodecContext
中設定的值,在這種情況下,必須將其指定為等級 IDC 識別符(例如 "3.1"),如 H.264 附件 A 所定義。- sc_threshold (scenecut)
設定場景變更偵測的閾值。
- trellis (trellis)
執行網格量化以提高效率。預設為啟用。
- nr (nr)
雜訊降低
- me_range (merange)
動態搜尋的最大範圍(以像素為單位)。
- me_method (me)
設定動態估計方法。可能的值依速度遞減順序排列
- 「dia (dia)」
- 「epzs (dia)」
半徑為 1 的菱形搜尋(最快)。「epzs」是「dia」的別名。
- 「hex (hex)」
半徑為 2 的六邊形搜尋。
- 「umh (umh)」
不均勻多六邊形搜尋。
- 「esa (esa)」
窮舉搜尋。
- 「tesa (tesa)」
哈達瑪窮舉搜尋(最慢)。
- forced-idr
通常,當強制 I 畫面類型時,編碼器可以選擇任何類型的 I 畫面。此選項強制其選擇 IDR 畫面。
- subq (subme)
子像素動態估計方法。
- b_strategy (b-adapt)
適應性 B 畫面放置決策演算法。僅在第一次傳遞時使用。
- keyint_min (min-keyint)
最小 GOP 大小。
- coder
設定熵編碼器。可能的值
- 「ac」
啟用 CABAC。
- 「vlc」
啟用 CAVLC 並停用 CABAC。它產生與
x264
的 --no-cabac 選項相同的效果。
- cmp
設定全像素動態估計比較演算法。可能的值
- ‘chroma’
在動態估計中啟用色度。
- ‘sad’
在動態估計中忽略色度。它產生與
x264
的 --no-chroma-me 選項相同的效果。
- threads (threads)
編碼執行緒的數量。
- thread_type
設定多執行緒技術。可能的值
- ‘slice’
基於切片的多執行緒。它產生與
x264
的 --sliced-threads 選項相同的效果。- ‘frame’
基於畫面的多執行緒。
- flags
設定編碼旗標。它可用於停用封閉 GOP 並透過將其設定為
-cgop
來啟用開放 GOP。結果類似於x264
的 --open-gop 選項的行為。- rc_init_occupancy (vbv-init)
初始 VBV 緩衝區佔用率
- preset (preset)
設定編碼預設值。
- tune (tune)
設定編碼參數的調整。
- profile (profile)
設定設定檔限制。
- fastfirstpass
當設定為 1 時,在編碼第一次傳遞時啟用快速設定。當設定為 0 時,它具有與
x264
的 --slow-firstpass 選項相同的效果。- crf (crf)
設定恆定品質模式的品質。
- crf_max (crf-max)
在 CRF 模式下,防止 VBV 將品質降低到此點以下。
- qp (qp)
設定恆定量化率控制方法參數。
- aq-mode (aq-mode)
設定 AQ 方法。可能的值
- ‘none (0)’
已停用。
- ‘variance (1)’
變異數 AQ(複雜度遮罩)。
- 「autovariance (2)」
自動變異數 AQ(實驗性)。
- aq-strength (aq-strength)
設定 AQ 強度,減少平面和紋理區域中的區塊效應和模糊。
- psy
當設定為 1 時,使用心理視覺最佳化。當設定為 0 時,它具有與
x264
的 --no-psy 選項相同的效果。- psy-rd (psy-rd)
以 psy-rd:psy-trellis 格式設定心理視覺最佳化的強度。
- rc-lookahead (rc-lookahead)
設定幀類型和速率控制的前瞻幀數。
- weightb
當設定為 1 時,啟用 B 畫面的加權預測。當設定為 0 時,它具有與
x264
的 --no-weightb 選項相同的效果。- weightp (weightp)
設定 P 畫面的加權預測方法。可能的值
- ‘none (0)’
已停用
- 「simple (1)」
僅啟用加權參考
- 「smart (2)」
同時啟用加權參考和重複項
- ssim (ssim)
啟用編碼後計算和列印 SSIM 統計資訊。
- intra-refresh (intra-refresh)
當設定為 1 時,啟用使用週期性幀內刷新而不是 IDR 畫面。
- avcintra-class (class)
組態編碼器以產生 AVC-Intra。有效值為 50、100 和 200
- bluray-compat (bluray-compat)
組態編碼器以與藍光標準相容。它是設定 "bluray-compat=1 force-cfr=1" 的簡寫。
- b-bias (b-bias)
設定對 B 畫面使用頻率的影響。
- b-pyramid (b-pyramid)
設定將某些 B 畫面保留為參考的方法。可能的值
- 「none (none)」
已停用。
- 「strict (strict)」
嚴格階層式金字塔。
- 「normal (normal)」
非嚴格(與藍光不相容)。
- mixed-refs
當設定為 1 時,啟用每個分割區使用一個參考,而不是每個巨集區塊使用一個參考。當設定為 0 時,它具有與
x264
的 --no-mixed-refs 選項相同的效果。- 8x8dct
當設定為 1 時,啟用適應性空間轉換(高設定檔 8x8 轉換)。當設定為 0 時,它具有與
x264
的 --no-8x8dct 選項相同的效果。- fast-pskip
當設定為 1 時,在 P 畫面中啟用早期 SKIP 偵測。當設定為 0 時,它具有與
x264
的 --no-fast-pskip 選項相同的效果。- aud (aud)
當設定為 1 時,啟用存取單元分隔符的使用。
- mbtree
當設定為 1 時,啟用巨集區塊樹狀結構速率控制的使用。當設定為 0 時,它具有與
x264
的 --no-mbtree 選項相同的效果。- deblock (deblock)
以 alpha:beta 形式設定迴路濾波器參數。
- cplxblur (cplxblur)
設定 QP 中的波動降低量(在曲線壓縮之前)。
- partitions (partitions)
設定要考慮的分割區作為逗號分隔的值列表。列表中的可能值
- 「p8x8」
8x8 P 畫面分割區。
- 「p4x4」
4x4 P 畫面分割區。
- 「b8x8」
4x4 B 畫面分割區。
- 「i8x8」
8x8 I 畫面分割區。
- 「i4x4」
4x4 I 畫面分割區。(啟用「p4x4」需要啟用「p8x8」。啟用「i8x8」需要啟用適應性空間轉換 (8x8dct 選項)。)
- 「none (none)」
不考慮任何分割區。
- 「all (all)」
考慮每個分割區。
- direct-pred (direct)
設定直接 MV 預測模式。可能的值
- 「none (none)」
停用 MV 預測。
- 「spatial (spatial)」
啟用空間預測。
- 「temporal (temporal)」
啟用時間預測。
- 「auto (auto)」
自動決定。
- slice-max-size (slice-max-size)
設定每個切片大小的限制(以位元組為單位)。如果未指定,但指定了 RTP 酬載大小 (ps),則使用該大小。
- stats (stats)
設定多遍統計資訊的檔案名稱。
- nal-hrd (nal-hrd)
設定訊號 HRD 資訊(需要設定 vbv-bufsize)。可能的值
- 「none (none)」
停用 HRD 資訊訊號。
- 「vbr (vbr)」
可變位元率。
- 「cbr (cbr)」
恆定位元率(MP4 容器中不允許)。
- x264opts opts
- x264-params opts
使用以冒號分隔的 key=value 選項列表覆寫 x264 組態。
兩個選項的引數都是以 ":" 分隔的 key=value 配對列表。對於 x264opts,可以省略值,在這種情況下,假設值為
1
。對於使用 ":" 作為分隔符的 filter 和 psy-rd 選項值,請改用 ","。它們很久以前就接受它,但由於某些原因,這一直未被記錄在文件中。
例如,選項可以提供為
level=30:bframes=0:weightp=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subq=6:8x8dct=0:trellis=0
例如,若要使用
ffmpeg
指定 libx264 編碼選項ffmpeg -i foo.mpg -c:v libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv
若要取得 libx264 選項的完整列表,請調用命令
x264 --fullhelp
或查閱 libx264 文件。- a53cc boolean
將隱藏式字幕(必須是 ATSC 相容格式)匯入輸出。只有 mpeg2 和 h264 解碼器提供這些。預設值為 1(開啟)。
- udu_sei boolean
如果可用,將使用者資料未註冊 SEI 匯入輸出。預設值為 0(關閉)。
- mb_info boolean
透過 AVFrameSideData 設定 mb_info 資料,僅在從 API 使用時有用。預設值為 0(關閉)。
提供常用用法的編碼 ffpreset,因此可以與一般預設系統一起使用(例如,傳遞 pre 選項)。
9.17 libx265
x265 H.265/HEVC 編碼器封裝器。
此編碼器在組態期間需要 libx265 標頭和函式庫。您需要使用 --enable-libx265 明確組態建置。
9.17.1 选项
- b
設定目標視訊位元率。
- bf
- g
設定 GOP 大小。
- keyint_min
最小 GOP 大小。
- refs
每個 P 畫面可以使用的參考畫面數量。範圍是 1-16。
- preset
設定 x265 預設值。
- tune
設定 x265 調整參數。
- profile
設定設定檔限制。
- crf
設定恆定品質模式的品質。
- qp
設定恆定量化率控制方法參數。
- qmin
最小量化器比例。
- qmax
最大量化器比例。
- qdiff
量化器比例之間的最大差異。
- qblur
量化器曲線模糊
- qcomp
量化器曲線壓縮因子
- i_qfactor
- b_qfactor
- forced-idr
通常,當強制 I 畫面類型時,編碼器可以選擇任何類型的 I 畫面。此選項強制其選擇 IDR 畫面。
- udu_sei boolean
如果可用,將使用者資料未註冊 SEI 匯入輸出。預設值為 0(關閉)。
- x265-params
使用以 ":" 分隔的 key=value 配對列表設定 x265 選項。有關選項列表,請參閱
x265 --help
。例如,若要使用 -x265-params 指定 libx265 編碼選項
ffmpeg -i input -c:v libx265 -x265-params crf=26:psy-rd=1 output.mp4
9.18 libxavs2
xavs2 AVS2-P2/IEEE1857.4 編碼器封裝器。
此編碼器在組態期間需要 libxavs2 標頭和函式庫。您需要使用 --enable-libxavs2 明確組態建置。
使用以下標準 libavcodec 選項
- b / bit_rate
- g / gop_size
- bf / max_b_frames
編碼器也有其自己的特定選項
9.18.1 选项
- lcu_row_threads
設定列的平行執行緒數,從 1 到 8(預設值為 5)。
- initial_qp
設定 xavs2 量化參數,從 1 到 63(預設值為 34)。這用於設定第一個畫面的初始 qp。
- qp
設定 xavs2 量化參數,從 1 到 63(預設值為 34)。這用於設定恆定 QP 模式下的 qp 值。
- max_qp
設定速率控制的最大 qp,從 1 到 63(預設值為 55)。
- min_qp
設定速率控制的最小 qp,從 1 到 63(預設值為 20)。
- speed_level
設定速度等級,從 0 到 9(預設值為 0)。值越高越好,但速度越慢。
- log_level
設定記錄等級,從 -1 到 3(預設值為 0)。-1:無,0:錯誤,1:警告,2:資訊,3:偵錯。
- xavs2-params
使用以 ":" 分隔的 key=value 配對列表設定 xavs2 選項。
例如,若要使用 -xavs2-params 指定 libxavs2 編碼選項
ffmpeg -i input -c:v libxavs2 -xavs2-params RdoqLevel=0 output.avs2
9.19 libxeve
eXtra-fast Essential Video Encoder (XEVE) MPEG-5 EVC 編碼器封裝器。括號中列出 xeve 等效選項或值,以便於遷移。
此編碼器在組態期間需要 libxeve 標頭和函式庫。您需要使用 --enable-libxeve 明確組態建置。
許多 libxeve 編碼器選項已對應到 FFmpeg 全域編解碼器選項,而獨特的編碼器選項則透過私有選項提供。此外,xeve-params 私有選項允許使用者傳遞 libxeve parse_xeve_params
函式接受的 key=value 元組列表。
xeve 專案網站位於 https://github.com/mpeg5/xeve。
9.19.1 选项
libxeve 封裝器支援以下選項。括號中列出 xeve 等效選項或值,以便於遷移。
為了減少文件重複,此處僅記錄私有選項和一些需要特別注意的其他選項。 有關未記錄的通用選項的文件,請參閱 編碼解碼器選項章節。
若要取得更準確和廣泛的 libxeve 選項文件,請調用命令 xeve_app --help
或查閱 libxeve 文件。
- b (bitrate)
設定目標視訊位元率,單位為位元/秒。請注意,FFmpeg 的 b 選項以位元/秒表示,而 xeve 的位元率以千位元/秒表示。
- bf (bframes)
設定 B 畫面的最大數量 (1,3,7,15)。
- g (keyint)
設定 GOP 大小(I 畫面週期)。
- preset (preset)
設定 xeve 預設值。設定編碼器預設值以確定編碼速度 [fast, medium, slow, placebo]
- tune (tune)
設定編碼器調整參數 [psnr, zerolatency]
- profile (profile)
設定編碼器設定檔 [0: baseline; 1: main]
- crf (crf)
設定恆定品質模式的品質。恆定速率因子 <10..49> [預設值:32]
- qp (qp)
設定恆定量化率控制方法參數。量化參數 qp <0..51> [預設值:32]
- threads (threads)
强制使用特定数量的线程
9.20 libxvid
Xvid MPEG-4 Part 2 編碼器封裝器。
此編碼器在組態期間需要 libxvidcore 標頭和函式庫。您需要使用 --enable-libxvid --enable-gpl
明確組態建置。
原生 mpeg4
編碼器支援 MPEG-4 Part 2 格式,因此使用者無需此函式庫即可編碼為此格式。
9.20.1 选项
libxvid 封裝器支援以下選項。下列某些選項已列出但未記錄,並且對應於共用編解碼器選項。請參閱 編解碼器選項章節 以取得其文件。未列出的其他共用選項對於 libxvid 編碼器無效。
- b
- g
- qmin
- qmax
- mpeg_quant
- threads
- bf
- b_qfactor
- b_qoffset
- flags
設定特定編碼旗標。可能的值
- ‘mv4’
每個巨集區塊使用四個動態向量。
- ‘aic’
啟用高品質 AC 預測。
- ‘gray’
僅編碼灰階。
- ‘qpel’
啟用四分之一像素動態補償。
- ‘cgop’
啟用封閉 GOP。
- ‘global_header’
将全局标头放在 extradata 中,而不是每个关键帧中。
- gmc
啟用全域動態補償 (GMC) 的使用。預設值為 0(停用)。
- me_quality
設定動態估計品質等級。可能的值依速度遞減順序和品質遞增順序排列
- 「0」
不使用動態估計(預設值)。
- 「1, 2」
啟用 16x16 區塊的進階菱形區域搜尋和 16x16 區塊的半像素精細化。
- 「3, 4」
啟用上述所有功能,加上 8x8 區塊的進階菱形區域搜尋和 8x8 區塊的半像素精細化,並啟用 P 畫面和 B 畫面的色度平面上的動態估計。
- 「5, 6」
啟用上述所有功能,加上擴展的 16x16 和 8x8 區塊搜尋。
- mbd
設定巨集區塊決策演算法。可能的值依品質遞增順序排列
- ‘simple’
使用巨集區塊比較函式演算法(預設值)。
- ‘bits’
啟用 16x16 區塊的基於速率失真半像素和四分之一像素精細化。
- ‘rd’
啟用上述所有功能,加上 8x8 區塊的基於速率失真半像素和四分之一像素精細化,以及使用方形模式的基於速率失真搜尋。
- lumi_aq
當設定為 1 時,啟用亮度遮罩適應性量化。預設值為 0(停用)。
- variance_aq
當設定為 1 時,啟用變異數適應性量化。預設值為 0(停用)。
當與 lumi_aq 結合使用時,產生的品質不會優於單獨指定的任何一個。換句話說,產生的品質將是兩種效果中較差的一個。
- trellis
设置码率失真最优量化。
- ssim
設定結構相似性 (SSIM) 顯示方法。可能的值
- ‘off’
停用 SSIM 資訊的顯示。
- 「avg」
在編碼結束時將平均 SSIM 輸出到 stdout。顯示平均 SSIM 的格式為
Average SSIM: %f
對於不熟悉 C 的使用者,%f 表示浮點數或小數(例如 0.939232)。
- ‘frame’
在編碼期間輸出每個畫面的 SSIM 資料,並在編碼結束時將平均 SSIM 輸出到 stdout。每個畫面的資訊格式為
SSIM: avg: %1.3f min: %1.3f max: %1.3f
對於不熟悉 C 的使用者,%1.3f 表示四捨五入到小數點後 3 位數的浮點數(例如 0.932)。
- ssim_acc
設定 SSIM 精確度。有效選項是 0-4 範圍內的整數,其中 0 提供最精確的結果,而 4 計算速度最快。
9.21 MediaFoundation
這提供了 MediaFoundation 框架中編碼器(音訊和視訊)的封裝器。它可以存取 SW 和 HW 編碼器。視訊編碼器可以採用 nv12 或 yuv420p 形式的輸入(某些編碼器同時支援這兩種形式,某些編碼器僅支援其中一種形式 - 實際上,nv12 是更安全的選擇,尤其是在 HW 編碼器中)。
9.22 Microsoft RLE
Microsoft RLE 又名 MSRLE 編碼器。僅支援 8 位元調色盤模式。與 Windows 3.1 和 Windows 95 相容。
9.22.1 选项
- g 整數
關鍵幀間隔。 關鍵幀至少每
-g
幀插入一次,有時更快。
9.23 mpeg2
MPEG-2 視訊編碼器。
9.23.1 选项
- profile
選擇要編碼的 mpeg2 設定檔
- 「422」
- ‘high’
- 「ss」
空間可擴展
- 「snr」
SNR 可擴展
- ‘main’
- ‘simple’
- level
選擇要編碼的 mpeg2 等級
- ‘high’
- 「high1440」
- ‘main’
- 「low」
- seq_disp_ext integer
指定編碼器是否應將 sequence_display_extension 寫入輸出。
- -1
- 自動
透過檢查要寫入的資料是否與預設值或未指定的值不同,自動決定是否寫入它(這是預設值)。
- 0
- never
永遠不要寫入它。
- 1
- always
始終寫入它。
- video_format integer
指定寫入序列顯示擴展中的 video_format,指示視訊圖片的來源。預設值為「unspecified」,可以是「component」、「pal」、「ntsc」、「secam」或「mac」。為了獲得最大的相容性,請使用「component」。
- a53cc boolean
將隱藏式字幕(必須是 ATSC 相容格式)匯入輸出。預設值為 1(開啟)。
9.24 png
PNG 影像編碼器。
9.24.1 私有选项
- dpi integer
設定像素的物理密度,以每英吋點數為單位,預設為未設定
- dpm integer
設定像素的物理密度,以每公尺點數為單位,預設為未設定
9.25 ProRes
Apple ProRes 編碼器。
FFmpeg 包含 2 個 ProRes 編碼器,即 prores-aw 和 prores-ks 編碼器。可以使用 -vcodec
選項選擇使用的編碼器。
9.25.1 prores-ks 的私有选项
- profile integer
選擇要編碼的 ProRes 設定檔
- 「proxy」
- 「lt」
- 「standard」
- 「hq」
- 「4444」
- 「4444xq」
- quant_mat integer
選擇量化矩陣。
- ‘auto’
- ‘default’
- 「proxy」
- 「lt」
- 「standard」
- 「hq」
如果設定為 auto,則將選擇與設定檔相符的矩陣。如果未設定,則將選擇提供最高品質的矩陣 default。
- bits_per_mb integer
為編碼一個巨集區塊分配多少位元。不同的設定檔使用每個巨集區塊 200 到 2400 位元,最大值為 8000。
- mbs_per_slice integer
每個切片中的巨集區塊數量 (1-8);預設值 (8) 在幾乎所有情況下都應該很好。
- vendor string
覆寫 4 位元組供應商 ID。自訂供應商 ID(如 apl0)將聲稱串流是由 Apple 編碼器產生的。
- alpha_bits integer
指定 Alpha 分量的位元數。可能的值為 0、8 和 16。使用 0 停用 Alpha 平面編碼。
9.25.2 速度考量
在預設操作模式下,編碼器必須遵守畫面限制(即,產生的畫面大小不得大於請求的大小),同時仍使輸出圖片盡可能好。包含大量小細節的畫面更難以壓縮,並且編碼器將花費更多時間搜尋每個切片的適當量化器。
設定更高的 bits_per_mb 限制將提高速度。
為了獲得最快的編碼速度,請設定 qscale 參數(建議值為 4),並且不要設定大小限制。
9.26 QSV 编码器
Intel QuickSync Video 編碼器系列(MPEG-2、H.264、HEVC、JPEG/MJPEG、VP9、AV1)
9.26.1 码率控制方法
速率控制方法的選擇如下
- 當指定 global_quality 時,使用基於品質的模式。具體而言,這表示
- - CQP - 恆定量化器比例,當也設定了 qscale 編解碼器旗標時(-qscale ffmpeg 選項)。
- - LA_ICQ - 具有前瞻的智慧恆定品質,當也設定了 look_ahead 選項時。
- - ICQ – 否則為智慧恆定品質。對於 ICQ 模式,全域品質範圍為 1 到 51,其中 1 為最佳品質。
- 否則,當使用 b 選項指定所需的平均位元率時,將使用基於位元率的模式。
- - LA - 具有前瞻的 VBR,當指定了 look_ahead 選項時。
- - VCM - 視訊會議模式,當設定了 vcm 選項時。
- - CBR - 恆定位元率,當 maxrate 已指定且等於平均位元率時。
- - VBR - 可變位元率,當 maxrate 已指定,但高於平均位元率時。
- - AVBR - 平均 VBR 模式,當未指定 maxrate,並且 avbr_accuracy 和 avbr_convergence 都設定為非零時。此模式適用於 Windows 上的 H264 和 HEVC。
- 否則,將使用預設速率控制方法 CQP。
請注意,根據您的系統,編碼器可能會選擇與您指定的模式不同的模式。將詳細程度等級設定為 verbose 或更高,以查看 QSV 執行階段使用的實際設定。
9.26.2 全局选项 -> MSDK 选项
其他 libavcodec 全域選項對應到 MSDK 選項,如下所示
- g/gop_size -> GopPicSize
- bf/max_b_frames+1 -> GopRefDist
- rc_init_occupancy/rc_initial_buffer_occupancy -> InitialDelayInKB
- slices -> NumSlice
- refs -> NumRefFrame
- b_strategy/b_frame_strategy -> BRefType
- cgop/CLOSED_GOP 編解碼器旗標 -> GopOptFlag
- 對於 CQP 模式,i_qfactor/i_qoffset 和 b_qfactor/b_qoffset 分別設定 QPP 和 QPI 之間以及 QPP 和 QPB 之間的差異。
- 將 coder 選項設定為值 vlc 將使 H.264 編碼器使用 CAVLC 而不是 CABAC。
9.26.3 通用选项
以下選項由所有 qsv 編碼器使用。
- async_depth
指定應用程式在明確同步結果之前執行的非同步操作數量。如果為零,則未指定值。
- preset
此選項列舉了一系列選擇,從 veryfast(最佳速度)到 veryslow(最佳品質)。
- 「veryfast」
- 「faster」
- ‘fast’
- 「medium」
- 「slow」
- 「slower」
- 「veryslow」
- forced_idr
強制 I 畫面作為 IDR 畫面。
- low_power
對於編碼器,將此旗標設定為 ON 以降低功耗和 GPU 使用率。
9.26.4 运行时选项
以下選項可以在 qsv 編碼期間使用。
- global_quality
- i_quant_factor
- i_quant_offset
- b_quant_factor
- b_quant_offset
h264_qsv 和 hevc_qsv 中支援。變更這些值以重設 qsv 編解碼器的 qp 組態。
- max_frame_size
h264_qsv 和 hevc_qsv 中支援。變更此值以重設 qsv 編解碼器的 MaxFrameSize 組態。
- gop_size
變更此值以重設 qsv 編解碼器的 gop 組態。
- int_ref_type
- int_ref_cycle_size
- int_ref_qp_delta
- int_ref_cycle_dist
h264_qsv 和 hevc_qsv 中支援。變更這些值以重設 qsv 編解碼器的幀內刷新組態。
- qmax
- qmin
- max_qp_i
- min_qp_i
- max_qp_p
- min_qp_p
- max_qp_b
- min_qp_b
h264_qsv 中支援。變更這些值以重設 qsv 編解碼器的最大/最小 qp 組態。
- low_delay_brc
h264_qsv、hevc_qsv 和 av1_qsv 中支援。變更此值以重設 qsv 編解碼器的 low_delay_brc 組態。
- framerate
變更此值以重設 qsv 編解碼器的幀率組態。
- bit_rate
- rc_buffer_size
- rc_initial_buffer_occupancy
- rc_max_rate
變更這些值以重設 qsv 編解碼器的位元率控制組態。
- pic_timing_sei
h264_qsv 和 hevc_qsv 中支援。變更此值以重設 qsv 編解碼器的 pic_timing_sei 組態。
- qsv_params
將 QSV 編碼器參數設定為以冒號分隔的鍵值對列表。
qsv_params 應格式化為
key1=value1:key2=value2:...
。這些參數使用 MFXSetParameter 函式直接傳遞到基礎 Intel Quick Sync Video (QSV) 編碼器。
範例
ffmpeg -i input.mp4 -c:v h264_qsv -qsv_params "CodingOption1=1:CodingOption2=2" output.mp4
此選項允許對 QSV 編碼器提供的各種編碼器特定設定進行細粒度控制。
9.26.5 H264 选项
這些選項由 h264_qsv 使用
- extbrc
擴展位元率控制。
- recovery_point_sei
設定此旗標以在每個幀內刷新週期的開始處插入恢復點 SEI 訊息。
- rdo
啟用速率失真最佳化。
- max_frame_size
最大編碼畫面大小(以位元組為單位)。
- max_frame_size_i
I 畫面的最大編碼畫面大小(以位元組為單位)。如果將此值設定為大於零,則對於 I 畫面,將忽略 max_frame_size 設定的值。
- max_frame_size_p
P 畫面的最大編碼畫面大小(以位元組為單位)。如果將此值設定為大於零,則對於 P 畫面,將忽略 max_frame_size 設定的值。
- max_slice_size
最大編碼切片大小(以位元組為單位)。
- bitrate_limit
切換位元率限制。修改位元率以使其在 QSV 編碼器施加的範圍內。關閉此旗標可能會導致違反 HRD 相符性。請注意,指定低於 QSV 編碼器範圍的位元率可能會顯著影響品質。如果開啟此選項在非 CQP 模式下生效:如果位元率不在 QSV 編碼器施加的範圍內,則會將其變更為在該範圍內。
- mbbrc
設定此旗標會啟用巨集區塊等級位元率控制,這通常會提高主觀視覺品質。啟用此旗標可能會對效能和客觀視覺品質指標產生負面影響。
- low_delay_brc
設定此旗標會開啟或關閉 qsv 外掛程式中的 LowDelayBRC 功能,該功能提供更精確的位元率控制,以最大程度地減少每個畫面的位元流大小的變異數。值:-1-預設值 0-關閉 1-開啟
- adaptive_i
此旗標控制 QSV 編碼器插入 I 畫面。開啟此旗標以允許將畫面類型從 P 和 B 變更為 I。
- adaptive_b
此旗標控制將畫面類型從 B 變更為 P。
- p_strategy
啟用 P 金字塔:0-預設值 1-簡單 2-金字塔(需要將 bf 設定為 0)。
- b_strategy
此選項控制 B 畫面作為參考的用法。
- dblk_idc
此選項停用去區塊濾波。它的值範圍為 0~2。
- cavlc
如果設定,則使用 CAVLC;如果未設定,則使用 CABAC 進行編碼。
- vcm
視訊會議模式,請參閱速率控制方法。
- idr_interval
IDR 畫面之間的距離(以 I 畫面為單位)。
- pic_timing_sei
插入具有 pic_struct_syntax 元素的圖片時序 SEI。
- single_sei_nal_unit
將所有 SEI 訊息放入一個 NALU。
- max_dec_frame_buffering
DPB 中緩衝的最大畫面數量。
- look_ahead
使用具有前瞻的 VBR 演算法。
- look_ahead_depth
前瞻深度(以畫面數量為單位)。
- look_ahead_downsampling
為前瞻分析儲存的畫面的縮減取樣因子。
- ‘unknown’
- ‘auto’
- ‘off’
- 「2x」
- 「4x」
- int_ref_type
指定幀內刷新類型。幀內刷新的主要目標是在不顯著影響 I 畫面引起的編碼位元流大小的情況下,提高錯誤彈性。none 表示不刷新。vertical 表示垂直刷新,按 MB 列。horizontal 表示水平刷新,按 MB 行。slice 表示按切片水平刷新,無重疊。在 slice 的情況下,將忽略 in_ref_cycle_size。若要啟用幀內刷新,應將 B 畫面設定為 0。
- int_ref_cycle_size
指定從 2 開始的刷新週期內的圖片數量。0 和 1 是無效值。
- int_ref_qp_delta
指定插入的幀內 MB 的 QP 差異。如果亮度樣本的目標編碼位元深度為 8,則此為 [-51, 51] 範圍內的帶符號值,對於 10 位元深度,此範圍為 [-63, 63],對於 12 位元深度,此範圍為 [-75, 75]。
- int_ref_cycle_dist
幀內刷新週期開始之間的距離(以畫面為單位)。
- profile
- ‘unknown’
- 「baseline」
- ‘main’
- ‘high’
- a53cc
使用 A53 隱藏式字幕(如果可用)。
- aud
插入存取單元分隔符 NAL。
- mfmode
多畫面模式。
- ‘off’
- ‘auto’
- repeat_pps
為每個畫面重複 pps。
- max_qp_i
I 畫面的最大視訊量化器比例。
- min_qp_i
I 畫面的最小視訊量化器比例。
- max_qp_p
P 畫面的最大視訊量化器比例。
- min_qp_p
P 畫面的最小視訊量化器比例。
- max_qp_b
B 畫面的最大視訊量化器比例。
- min_qp_b
B 畫面的最小視訊量化器比例。
- scenario
提供有關編碼會話情境的提示給編碼器。
- ‘unknown’
- 「displayremoting」
- 「videoconference」
- 「archive」
- 「livestreaming」
- 「cameracapture」
- 「videosurveillance」
- 「gamestreaming」
- 「remotegaming」
- avbr_accuracy
AVBR 速率控制的準確度(百分之十的單位)。
- avbr_convergence
AVBR 速率控制的收斂性(100 個畫面的單位)
參數 avbr_accuracy 和 avbr_convergence 用於平均可變位元率控制 (AVBR) 演算法。該演算法專注於整體編碼品質,同時在 avbr_accuracy 準確度範圍內,在 avbr_Convergence 週期後,達到指定的位元率 target_bitrate。此方法不遵循 HRD,並且瞬時位元率未上限或填補。
- skip_frame
使用每個畫面的中繼資料 "qsv_skip_frame" 在編碼時跳過畫面。此選項定義了此中繼資料的用法。
- 「no_skip」
停用畫面跳過。
- 「insert_dummy」
編碼器將所有巨集區塊都編碼為跳過的畫面插入到位元流中。
- 「insert_nothing」
與 insert_dummy 類似,但編碼器不會將任何內容插入到位元流中。跳過的畫面仍用於 brc。例如,gop 仍包含跳過的畫面,並且跳過的畫面之後的畫面將更大。
- 「brc_only」
skip_frame 中繼資料指示目前畫面之前遺漏的畫面數量。
9.26.6 HEVC 选项
這些選項由 hevc_qsv 使用
- extbrc
擴展位元率控制。
- recovery_point_sei
設定此旗標以在每個幀內刷新週期的開始處插入恢復點 SEI 訊息。
- rdo
啟用速率失真最佳化。
- max_frame_size
最大編碼畫面大小(以位元組為單位)。
- max_frame_size_i
I 畫面的最大編碼畫面大小(以位元組為單位)。如果將此值設定為大於零,則對於 I 畫面,將忽略 max_frame_size 設定的值。
- max_frame_size_p
P 畫面的最大編碼畫面大小(以位元組為單位)。如果將此值設定為大於零,則對於 P 畫面,將忽略 max_frame_size 設定的值。
- max_slice_size
最大編碼切片大小(以位元組為單位)。
- mbbrc
設定此旗標會啟用巨集區塊等級位元率控制,這通常會提高主觀視覺品質。啟用此旗標可能會對效能和客觀視覺品質指標產生負面影響。
- low_delay_brc
設定此旗標會開啟或關閉 qsv 外掛程式中的 LowDelayBRC 功能,該功能提供更精確的位元率控制,以最大程度地減少每個畫面的位元流大小的變異數。值:-1-預設值 0-關閉 1-開啟
- adaptive_i
此旗標控制 QSV 編碼器插入 I 畫面。開啟此旗標以允許將畫面類型從 P 和 B 變更為 I。
- adaptive_b
此旗標控制將畫面類型從 B 變更為 P。
- p_strategy
啟用 P 金字塔:0-預設值 1-簡單 2-金字塔(需要將 bf 設定為 0)。
- b_strategy
此選項控制 B 畫面作為參考的用法。
- dblk_idc
此選項停用去區塊濾波。它的值範圍為 0~2。
- idr_interval
IDR 畫面之間的距離(以 I 畫面為單位)。
- 「begin_only」
僅在串流開始時輸出 IDR 畫面。
- load_plugin
要在內部會話中載入的使用者外掛程式。
- ‘none’
- ‘hevc_sw’
- ‘hevc_hw’
- load_plugins
要在內部會話中載入的十六進位外掛程式 UID 的冒號分隔列表。
- look_ahead_depth
前瞻深度(以畫面數量為單位),當啟用 extbrc 選項時可用。
- profile
設定編碼設定檔(scc 需要 libmfx >= 1.32)。
- ‘unknown’
- ‘main’
- 「main10」
- 「mainsp」
- 「rext」
- 「scc」
- tier
設定編碼層級(只有等級 >= 4 才能支援高層級)。此選項僅在指定等級選項時才生效。
- ‘main’
- ‘high’
- gpb
1:GPB(廣義 P/B 畫面)
0:常規 P 畫面。
- tile_cols
平鋪編碼的列數。
- tile_rows
tile_rows
- aud
插入存取單元分隔符 NAL。
- pic_timing_sei
插入具有 pic_struct_syntax 元素的圖片時序 SEI。
- 平鋪編碼的行數。
transform_skip
- int_ref_type
指定幀內刷新類型。幀內刷新的主要目標是在不顯著影響 I 畫面引起的編碼位元流大小的情況下,提高錯誤彈性。none 表示不刷新。vertical 表示垂直刷新,按 MB 列。horizontal 表示水平刷新,按 MB 行。slice 表示按切片水平刷新,無重疊。在 slice 的情況下,將忽略 in_ref_cycle_size。若要啟用幀內刷新,應將 B 畫面設定為 0。
- int_ref_cycle_size
指定從 2 開始的刷新週期內的圖片數量。0 和 1 是無效值。
- int_ref_qp_delta
指定插入的幀內 MB 的 QP 差異。如果亮度樣本的目標編碼位元深度為 8,則此為 [-51, 51] 範圍內的帶符號值,對於 10 位元深度,此範圍為 [-63, 63],對於 12 位元深度,此範圍為 [-75, 75]。
- int_ref_cycle_dist
幀內刷新週期開始之間的距離(以畫面為單位)。
- max_qp_i
I 畫面的最大視訊量化器比例。
- min_qp_i
I 畫面的最小視訊量化器比例。
- max_qp_p
P 畫面的最大視訊量化器比例。
- min_qp_p
P 畫面的最小視訊量化器比例。
- max_qp_b
B 畫面的最大視訊量化器比例。
- min_qp_b
B 畫面的最小視訊量化器比例。
- scenario
提供有關編碼會話情境的提示給編碼器。
- ‘unknown’
- 「displayremoting」
- 「videoconference」
- 「archive」
- 「livestreaming」
- 「cameracapture」
- 「videosurveillance」
- 「gamestreaming」
- 「remotegaming」
- avbr_accuracy
AVBR 速率控制的準確度(百分之十的單位)。
- avbr_convergence
AVBR 速率控制的收斂性(100 個畫面的單位)
參數 avbr_accuracy 和 avbr_convergence 用於平均可變位元率控制 (AVBR) 演算法。該演算法專注於整體編碼品質,同時在 avbr_accuracy 準確度範圍內,在 avbr_Convergence 週期後,達到指定的位元率 target_bitrate。此方法不遵循 HRD,並且瞬時位元率未上限或填補。
- skip_frame
使用每個畫面的中繼資料 "qsv_skip_frame" 在編碼時跳過畫面。此選項定義了此中繼資料的用法。
- 「no_skip」
停用畫面跳過。
- 「insert_dummy」
編碼器將所有巨集區塊都編碼為跳過的畫面插入到位元流中。
- 「insert_nothing」
與 insert_dummy 類似,但編碼器不會將任何內容插入到位元流中。跳過的畫面仍用於 brc。例如,gop 仍包含跳過的畫面,並且跳過的畫面之後的畫面將更大。
- 「brc_only」
skip_frame 中繼資料指示目前畫面之前遺漏的畫面數量。
9.26.7 MPEG2 选项
開啟此選項以啟用 transformskip。ICL 或更新的平台上支援它。
- profile
- ‘unknown’
- ‘simple’
- ‘main’
- ‘high’
9.26.8 VP9 选项
這些選項由 mpeg2_qsv 使用
- profile
- ‘unknown’
- 這些選項由 vp9_qsv 使用
- 「profile0」
- 「profile1」
- 「profile2」
- tile_cols
「profile3」
- tile_rows
平鋪編碼的列數(需要 libmfx >= 1.29)。
9.26.9 AV1 选项
平鋪編碼的行數(需要 libmfx >= 1.29)。
- profile
- ‘unknown’
- ‘main’
- tile_cols
平鋪編碼的列數。
- tile_rows
tile_rows
- adaptive_i
此旗標控制 QSV 編碼器插入 I 畫面。開啟此旗標以允許將畫面類型從 P 和 B 變更為 I。
- adaptive_b
此旗標控制將畫面類型從 B 變更為 P。
- b_strategy
此選項控制 B 畫面作為參考的用法。
- extbrc
擴展位元率控制。
- look_ahead_depth
前瞻深度(以畫面數量為單位),當啟用 extbrc 選項時可用。
- low_delay_brc
設定此旗標會開啟或關閉 qsv 外掛程式中的 LowDelayBRC 功能,該功能提供更精確的位元率控制,以最大程度地減少每個畫面的位元流大小的變異數。值:-1-預設值 0-關閉 1-開啟
- max_frame_size
這些選項由 av1_qsv 使用(需要 libvpl)。
- max_frame_size_i
I 畫面的最大編碼畫面大小(以位元組為單位)。如果將此值設定為大於零,則對於 I 畫面,將忽略 max_frame_size 設定的值。
- max_frame_size_p
P 畫面的最大編碼畫面大小(以位元組為單位)。如果將此值設定為大於零,則對於 P 畫面,將忽略 max_frame_size 設定的值。
9.27 snow
9.27.1 选项
- 設定每個畫面允許的最大大小(以位元組為單位)。如果畫面大小超過限制,編碼器將調整 QP 值以控制畫面大小。在 CQP 速率控制模式下無效。
iterative_dia_size
9.28 VAAPI 编码器
迭代動態估計的 dia 大小
透過 VAAPI 存取的硬體編碼器的封裝器。
使用以下標準 libavcodec 選項
- g / gop_size
- bf / max_b_frames
- profile
這些編碼器僅接受 VAAPI 硬體介面中的輸入。如果您有軟體畫面中的輸入,請使用 hwupload 濾波器將它們上傳到 GPU。
- level
- b / bit_rate
- 如果未設定,則將根據輸入畫面的格式和驅動程式支援的設定檔自動確定。
- maxrate / rc_max_rate
- bufsize / rc_buffer_size
- compression_level
rc_init_occupancy / rc_initial_buffer_occupancy
- 速度/品質權衡:值越高,速度越快/品質越差。
q / global_quality
- qmin
- qmax
- 大小/品質權衡:值越高,大小越小/品質越差。
- i_qfactor / i_quant_factor
- i_qoffset / i_quant_offset
- b_qfactor / b_quant_factor
- slices
b_qoffset / b_quant_offset
- low_power
所有編碼器都支援以下選項
- idr_interval
某些驅動程式/平台為某些編解碼器提供了第二個編碼器,旨在比預設編碼器使用更少的功率;設定此選項將嘗試使用該編碼器。請注意,它可能支援縮減的功能集,因此某些其他選項可能在此模式下不可用。
- b_depth
設定 B 畫面參考深度。當設定為 1(預設值)時,所有 B 畫面將僅參考 P 畫面或 I 畫面。當設定為較大的值時,將存在多個 B 畫面層,每個層中的畫面僅參考較高層中的畫面。
- async_depth
async_depth
- max_frame_size
這些選項由 av1_qsv 使用(需要 libvpl)。
- 最大處理平行度。增加此值可提高單通道效能。如果驅動程式未實作 vaSyncBuffer 函式,則此選項不起作用。如果使用大量的 async_depth,請確保分配了足夠的 hw_frames。
rc_mode
設定要使用的速率控制模式。給定的驅動程式可能僅支援模式的子集。
- 自動
可能的模式
- 根據驅動程式支援和其他選項自動選擇模式。這是預設值。
CQP
- 恆定品質。
CBR
- 恆定位元率。
VBR
- 可變位元率。
ICQ
- 智慧恆定品質。
QVBR
- 品質定義的可變位元率。
AVBR
- 平均可變位元率。
blbrc
啟用區塊等級速率控制,該控制逐區塊分配不同的位元率。對 CQP 模式無效。
- 每個編碼器也有其自己的特定選項
av1_vaapi
- tiles
profile 設定 seq_profile 的值。tier 設定 seq_tier 的值。level 設定 seq_level_idx 的值。
- tiles
設定用於編碼輸入視訊的平鋪數量,格式為列 x 行。(預設值為 auto,這表示使用最小的平鋪列/行數)。
- tile_groups
設定平鋪群組數量。所有平鋪將盡可能均勻地分配到每個平鋪群組。(預設值為 1)。
- coder
h264_vaapi
- 「ac」
- profile 設定 profile_idc 和 constraint_set*_flags 的值。level 設定 level_idc 的值。
設定熵編碼器(預設值為 cabac)。可能的值
- 「vlc」
- 「cabac」
使用 CABAC。
- aud
「cavlc」
- 使用 CAVLC。
在串流中包含存取單元分隔符(預設情況下不包含)。
- sei
設定要包含的 SEI 訊息類型。以下值的某些組合
- 「identifier」
包含 user_data_unregistered 訊息,其中包含有關編碼器的資訊。
- 「timing」
包含圖片時序參數(buffering_period 和 pic_timing 訊息)。
- 「recovery_point」
在適當的地方包含恢復點(recovery_point 訊息)。
- aud
「cavlc」
- tier
hevc_vaapi
- 使用 CAVLC。
在串流中包含存取單元分隔符(預設情況下不包含)。
- profile 和 level 分別設定 general_profile_idc 和 general_level_idc 的值。
設定 general_tier_flag。如果未明確指定,這可能會影響為串流選擇的等級。
- tiles
「hdr」
- 如果輸入畫面具有 HDR 中繼資料,則包含 HDR 中繼資料(mastering_display_colour_volume 和 content_light_level 訊息)。
tiles
設定用於編碼輸入視訊的平鋪數量,格式為列 x 行。較大的數字允許在編碼和解碼中實現更大的平行度,但可能會降低編碼效率。
- mjpeg_vaapi
僅支援基準 DCT 編碼。編碼器始終使用標準量化表和霍夫曼表 - global_quality 縮放標準量化表(範圍 1-100)。
- huffman
對於 YUV,支援 4:2:0、4:2:2 和 4:4:4 子取樣模式。也支援 RGB,並將建立 RGB JPEG。
- jfif
在每個畫面中包含 JFIF 標頭(預設情況下不包含)。
- huffman
包含標準霍夫曼表(預設為開啟)。關閉此功能將在每個輸出畫面中節省幾百位元組,但可能會失去與某些未完全處理 MJPEG 的 JPEG 解碼器的相容性。
mpeg2_vaapi
- profile 和 level 設定 profile_and_level_indication 的值。
- vp8_vaapi
不支援 B 畫面。
- global_quality 設定用於非關鍵畫面的 q_idx(範圍 0-127)。
loop_filter_level
- profile 和 level 設定 profile_and_level_indication 的值。
- vp8_vaapi
不支援 B 畫面。
loop_filter_sharpness
手動設定迴路濾波器參數。
9.29 vbn
vp9_vaapi
global_quality 設定用於 P 畫面的 q_idx(範圍 0-255)。
9.29.1 选项
- B 畫面受到支援,但輸出串流始終處於編碼順序而不是顯示順序。如果啟用 B 畫面,則可能需要使用 vp9_raw_reorder 位元流濾波器來修改輸出串流,以按正確的順序顯示畫面。
僅產生正常畫面 - 可能需要 vp9_superframe 位元流濾波器來產生可用於所有解碼器的串流。
9.30 vc2
Vizrt 二進制影像編碼器。
9.30.1 选项
- b
此格式由廣播供應商 Vizrt 用於快速紋理串流。不支援格式的進階功能,例如紋理資料的 LZW 壓縮或 mipmap 的產生。
- format string
設定 VBN 檔案使用的紋理壓縮。可以是 dxt1、dxt5 或 raw。預設值為 dxt5。
- SMPTE VC-2(以前稱為 BBC Dirac Pro)。此編解碼器主要針對專業廣播,但由於它支援 yuv420、yuv422 和 yuv444,位元深度為 8(有限範圍或完整範圍)、10 或 12 位元,因此使其適用於其他需要低負擔和低壓縮的任務(如螢幕錄製)。
bitrate integer
- 設定目標視訊位元率。通常約為未壓縮視訊位元率的 1:6(例如,對於 1920x1080 50fps yuv422p10,約為 400Mbps)。較高的值(接近未壓縮位元率)會開啟無損壓縮模式。
field_order
- 設定時(例如,設定為 tt - 上場優先)對交錯輸入啟用欄位編碼。應增加交錯內容的壓縮,因為它會分割欄位並分別編碼每個欄位。
- wavelet_depth
設定要應用的小波轉換總量,介於 1 到 5 之間(預設值)。較低的值會降低壓縮和品質。功能較差的解碼器可能無法處理超過 3 的 wavelet_depth 值。
- wavelet_type
設定轉換類型。目前僅實作了 5_3 (LeGall) 和 9_7 (Deslauriers-Dubuc),其中 9_7 是具有更好壓縮效果的類型,因此是預設值。
- slice_width
slice_height
- 設定每個切片的切片大小。較大的值會產生更好的壓縮效果。為了與其他更受限制的解碼器相容,請使用 32 的 slice_width 和 8 的 slice_height。
- tolerance
- 以百分比設定速率控制系統的下衝容差。這是為了防止執行昂貴的搜尋。
10 字幕编码器
10.1 dvdsub
qm
10.1.1 选项
- palette
設定要預設使用或在 wavelet_depth 設定為 5 時使用的量化矩陣預設值
此选项的格式是一个字符串,其中包含 16 个 24 位十六进制数字(不带 0x 前缀),以逗号分隔,例如
0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b
。- - default 使用規格中的預設量化矩陣,並使用第五層的值進行擴展。這在保持細節和省略偽影之間提供了良好的平衡。
- flat 使用完全歸零的量化矩陣。這會提高 PSNR,但可能會降低感知。在虛假基準測試中使用。
- color 降低細節,但嘗試在極低位元率下保留色彩。
11 另请参阅
此編解碼器編碼 DVD 中使用的點陣圖字幕格式。通常它們儲存在 VOBSUB 檔案對 (*.idx + *.sub) 中,它們也可以在 Matroska 檔案中使用。
12 作者
palette
指定點陣圖使用的全域調色盤。
even_rows_fix
當設定為 1 時,啟用一種解決方案,使所有字幕中的像素行數為偶數。這修正了某些播放器在行數為奇數時會切斷底行的問題。該解決方案只是在需要時新增一個完全透明的行。開銷很低,平均每個字幕一個位元組。
預設情況下,此解決方案已停用。