FFmpeg 编解码器文档

目录

1 说明

本文档描述了 libavcodec 库提供的编解码器(解码器和编码器)。

2 编解码器选项

libavcodec 提供了一些通用的全局选项,可以在所有编码器和解码器上进行设置。此外,每个编解码器可以支持所谓的私有选项,其特定于给定编解码器。

有时,全局选项可能只影响特定类型的编解码器,并且可能是无意义的或被另一种编解码器忽略,因此您需要了解指定选项的含义。此外,有些选项仅用于解码或编码。

可以通过在 FFmpeg 工具中 指定 -选项 AVCodecContext来设置选项,或者通过在选项中显式设置值或使用libavutil/opt.h用于编程使用的 API。

支持的选项列表如下:

b integer (encoding,audio,video)

设置比特率(以位/秒为单位)。默认值为 200K。

ab integer (encoding,audio)

设置音频比特率(以位/秒为单位)。默认值为 128K。

bt integer (encoding,video)

设置视频比特率容差(以位/秒为单位)。在 1-pass 模式下,比特率容差指定码率控制愿意偏离目标平均比特率值的程度。这与最小/最大比特率无关。过度降低耐受性会对质量产生不利影响。

flags flags (decoding/encoding,audio,video,subtitles)

设置通用标志。

可能的值:

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

将全局标题放置在额外数据中,而不是每个关键帧中。

bitexact

仅写入与平台、构建和时间无关的数据。((I)DCT 除外)。这可确保文件和数据校验和在平台之间可重复且匹配。它的主要用途是回归测试。

aic

应用H263高级帧内编码/mpeg4 ac预测。

ilme

应用隔行运动估计。

cgop

使用封闭的 gop。

output_corrupt

甚至输出可能损坏的帧。

time_base rational number

设置编解码器时基。

它是表示帧时间戳的基本时间单位(以秒为单位)。对于固定 fps 内容,时基应为1 / frame_rate1,时间戳增量应相同为 1。

g integer (encoding,video)

设置图片组 (GOP) 大小。默认值为 12。

ar integer (decoding/encoding,audio)

设置音频采样率(以 Hz 为单位)。

ac integer (decoding/encoding,audio)

设置音频通道数。

cutoff integer (encoding,audio)

设置截止带宽。(仅受选定编码器支持,请参阅其各自的文档部分。)

frame_size integer (encoding,audio)

设置音频帧大小。

除最后一个帧外,每个提交的帧都必须包含每个通道的frame_size 个样本。当编解码器设置了 CODEC_CAP_VARIABLE_FRAME_SIZE 时,可能为 0,在这种情况下,帧大小不受限制。它由一些解码器设置以指示恒定的帧大小。

frame_number integer

设置帧数。

delay integer
qcomp float (encoding,video)

设置视频量化器比例压缩 (VBR)。它用作速率控制方程中的常数。默认 rc_eq 的推荐范围:0.0-1.0。

qblur float (encoding,video)

设置视频量化器比例模糊 (VBR)。

qmin integer (encoding,video)

设置最小视频量化比例 (VBR)。必须包含在 -1 到 69 之间,默认值为 2。

qmax integer (encoding,video)

设置最大视频量化器比例 (VBR)。必须包含在 -1 到 1024 之间,默认值为 31。

qdiff integer (encoding,video)

设置量化器比例 (VBR) 之间的最大差异。

bf integer (encoding,video)

设置非 B 帧之间的 B 帧的最大数量。

必须是 -1 到 16 之间的整数。0 表示禁用 B 帧。如果使用值-1,它将根据编码器选择自动值。

默认值为 0。

b_qfactor float (encoding,video)

设置 P 帧和 B 帧之间的 qp 因子。

codec_tag integer
bug flags (decoding,video)

解决方法无法自动检测编码器错误。

可能的值:

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

解决微软损坏的解码器中的各种错误。

trunc

截断帧

strict integer (decoding/encoding,audio,video)

指定如何严格遵守标准。

可能的值:

very

严格遵守较旧的更严格版本的规范或参考软件

strict

严格遵守规范中的所有内容,无论后果如何

normal
unofficial

允许非官方扩展

experimental

允许非标准化的实验性事物、实验性(未完成/正在进行中/未经过充分测试)解码器和编码器。注意:实验性解码器可能会带来安全风险,请勿使用它来解码不受信任的输入。

b_qoffset float (encoding,video)

设置 P 帧和 B 帧之间的 QP 偏移。

err_detect flags (decoding,audio,video)

设置错误检测标志。

可能的值:

crccheck

验证嵌入的 CRC

bitstream

检测比特流规范偏差

buffer

检测不正确的比特流长度

explode

检测到小错误时中止解码

ignore_err

忽略解码错误,并继续解码。如果您想分析视频的内容并因此希望无论如何都可以解码所有内容,这非常有用。如果出现错误,此选项将不会产生令人赏心悦目的视频。

careful

考虑那些违反规范并且在野外未被视为错误的事情

compliant

将所有不符合规范的情况视为错误

aggressive

考虑一个理智的编码器不应该做的事情作为错误

has_b_frames integer
block_align integer
rc_override_count integer
maxrate integer (encoding,audio,video)

设置最大比特率容差(以位/秒为单位)。需要设置 bufsize。

minrate integer (encoding,audio,video)

设置最小比特率容限(以位/秒为单位)。在设置 CBR 编码时最有用。否则就没什么用了。

bufsize integer (encoding,audio,video)

设置速率控制缓冲区大小(以位为单位)。

i_qfactor float (encoding,video)

设置 P 帧和 I 帧之间的 QP 因子。

i_qoffset float (encoding,video)

设置 P 帧和 I 帧之间的 QP 偏移。

dct integer (encoding,video)

设置DCT算法。

可能的值:

auto

自动选择一个好的(默认)

fastint

快速整数

int

精确整数

mmx
altivec
faan

浮点 AAN DCT

lumi_mask float (encoding,video)

明亮区域的压缩强度比中等区域的压缩强度要大。

tcplx_mask float (encoding,video)

设置时间复杂度掩码。

scplx_mask float (encoding,video)

设置空间复杂性掩蔽。

p_mask float (encoding,video)

设置帧间屏蔽。

dark_mask float (encoding,video)

比中等区域更强烈地压缩黑暗区域。

idct integer (decoding/encoding,video)

选择 IDCT 实施。

可能的值:

auto
int
simple
simplemmx
simpleauto

自动选择与简单IDCT兼容的IDCT

arm
altivec
sh4
simplearm
simplearmv5te
simplearmv6
simpleneon
xvid
faani

浮点 AAN IDCT

slice_count integer
ec flags (decoding,video)

设置错误隐藏策略。

可能的值:

guess_mvs

迭代运动矢量 (MV) 搜索(慢速)

deblock

对损坏的 MB 使用强解块滤波器

favor_inter

倾向于从前一帧而不是当前帧进行预测

bits_per_coded_sample integer
aspect rational number (encoding,video)

设置样本纵横比。

sar rational number (encoding,video)

设置样本纵横比。方面的别名。

debug flags (decoding/encoding,audio,video,subtitles)

打印具体的调试信息。

可能的值:

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 integer (encoding,video)

设置完整的像素比较功能。

可能的值:

sad

绝对差值之和,快速(默认)

sse

误差平方和

satd

绝对 Hadamard 变换差值之和

dct

DCT 变换绝对差值之和

psnr

量化误差平方和(避免,低质量)

bit

块所需的位数

rd

率失真最佳,慢

zero

0

vsad

绝对垂直差之和

vsse

垂直差平方和

nsse

噪声保留平方差和

w53

5/3 小波,仅在雪中使用

w97

9/7 小波,仅在雪中使用

dctmax
chroma
subcmp integer (encoding,video)

设置子像素比较功能。

可能的值:

sad

绝对差值之和,快速(默认)

sse

误差平方和

satd

绝对 Hadamard 变换差值之和

dct

DCT 变换绝对差值之和

psnr

量化误差平方和(避免,低质量)

bit

块所需的位数

rd

率失真最佳,慢

zero

0

vsad

绝对垂直差之和

vsse

垂直差平方和

nsse

噪声保留平方差和

w53

5/3 小波,仅在雪中使用

w97

9/7 小波,仅在雪中使用

dctmax
chroma
mbcmp integer (encoding,video)

设置宏块比较功能。

可能的值:

sad

绝对差值之和,快速(默认)

sse

误差平方和

satd

绝对 Hadamard 变换差值之和

dct

DCT 变换绝对差值之和

psnr

量化误差平方和(避免,低质量)

bit

块所需的位数

rd

率失真最佳,慢

zero

0

vsad

绝对垂直差之和

vsse

垂直差平方和

nsse

噪声保留平方差和

w53

5/3 小波,仅在雪中使用

w97

9/7 小波,仅在雪中使用

dctmax
chroma
ildctcmp integer (encoding,video)

设置隔行DCT比较功能。

可能的值:

sad

绝对差值之和,快速(默认)

sse

误差平方和

satd

绝对 Hadamard 变换差值之和

dct

DCT 变换绝对差值之和

psnr

量化误差平方和(避免,低质量)

bit

块所需的位数

rd

率失真最佳,慢

zero

0

vsad

绝对垂直差之和

vsse

垂直差平方和

nsse

噪声保留平方差和

w53

5/3 小波,仅在雪中使用

w97

9/7 小波,仅在雪中使用

dctmax
chroma
dia_size integer (encoding,video)

设置运动估计的菱形类型和大小。

(1024, INT_MAX)

全运动估计(最慢)

(768, 1024]

嗯运动估计

(512, 768]

六角运动估计

(256, 512]

l2s 菱形运动估计

[2,256]

var 菱形运动估计

(-1, 2)

小菱形运动估计

-1

有趣的钻石运动估计

(INT_MIN, -1)

sab钻石运动估计

last_pred integer (encoding,video)

设置前一帧的运动预测变量的数量。

precmp integer (encoding,video)

设置预运动估计比较功能。

可能的值:

sad

绝对差值之和,快速(默认)

sse

误差平方和

satd

绝对 Hadamard 变换差值之和

dct

DCT 变换绝对差值之和

psnr

量化误差平方和(避免,低质量)

bit

块所需的位数

rd

率失真最佳,慢

zero

0

vsad

绝对垂直差之和

vsse

垂直差平方和

nsse

噪声保留平方差和

w53

5/3 小波,仅在雪中使用

w97

9/7 小波,仅在雪中使用

dctmax
chroma
pre_dia_size integer (encoding,video)

设置运动估计预通道的菱形类型和大小。

subq integer (encoding,video)

设置亚像素运动估计质量。

me_range integer (encoding,video)

设置限制运动矢量范围(DivX 播放器为 1023)。

global_quality integer (encoding,audio,video)
slice_flags integer
mbd integer (encoding,video)

设置宏块决策算法(高质量模式)。

可能的值:

simple

使用 mbcmp(默认)

bits

使用最少的位

rd

使用最佳率失真

rc_init_occupancy integer (encoding,video)

设置解码开始前应加载到 rc 缓冲区的位数。

flags2 flags (decoding/encoding,audio,video,subtitles)

可能的值:

fast

允许不符合规范的加速技巧。

noout

跳过比特流编码。

ignorecrop

忽略来自 sps 的裁剪信息。

local_header

将全局标题放置在每个关键帧上,而不是放在额外数据中。

chunks

帧数据可能被分成多个块。

showall

显示第一个关键帧之前的所有帧。

export_mvs

将运动矢量导出到帧侧数据(请参阅 参考资料AV_FRAME_DATA_MOTION_VECTORS)以了解支持它的编解码器。也可以看看文档/示例/export_mvs.c

skip_manual

不要跳过样本并将跳过信息导出为帧侧数据。

ass_ro_flush_noop

不要在刷新时重置 ASS ReadOrder 字段。

icc_profiles

从比色标签生成/解析嵌入的 ICC 配置文件。

export_side_data flags (decoding/encoding,audio,video,subtitles)

可能的值:

mvs

将运动矢量导出到帧侧数据(请参阅 参考资料AV_FRAME_DATA_MOTION_VECTORS)以了解支持它的编解码器。也可以看看文档/示例/export_mvs.c

prft

将编码器生产者参考时间导出到数据包侧数据中(请参阅AV_PKT_DATA_PRFT参考资料)以了解支持它的编解码器。

venc_params

通过帧端数据导出视频编码参数(请参阅 参考资料AV_FRAME_DATA_VIDEO_ENC_PARAMS)以了解支持它的编解码器。目前有 H.264 和 VP9。

film_grain

通过帧侧数据导出胶片颗粒参数(请参阅AV_FRAME_DATA_FILM_GRAIN_PARAMS)。目前支持 AV1 解码器。

threads integer (decoding/encoding,video)

设置要使用的线程数,以防所选编解码器实现支持多线程。

可能的值:

auto, 0

自动选择要设置的线程数

默认值为 '汽车'。

dc integer (encoding,video)

设置intra_dc_ precision。

nssew integer (encoding,video)

设置 nsse 权重。

skip_top integer (decoding,video)

设置顶部跳过的宏块行数。

skip_bottom integer (decoding,video)

设置底部跳过的宏块行数。

profile integer (encoding,audio,video)

设置编码器编解码器配置文件。默认值为 '未知'。编码器特定配置文件记录在相关编码器文档中。

level integer (encoding,audio,video)

设置编码器电平。此级别取决于特定的编解码器,并且可能对应于配置文件级别。它默认设置为 '未知'。

可能的值:

unknown
lowres integer (decoding,audio,video)

以 1= 1/2、2=1/4、3=1/8 分辨率进行解码。

mblmin integer (encoding,video)

设置最小宏块拉格朗日因子 (VBR)。

mblmax integer (encoding,video)

设置最大宏块拉格朗日因子 (VBR)。

skip_loop_filter integer (decoding,video)
skip_idct integer (decoding,video)
skip_frame integer (decoding,video)

根据选项值选择的帧类型进行解码器丢弃处理。

跳过循环过滤器跳过帧循环过滤,跳过IDCT 跳帧 IDCT/反量化,跳帧跳过解码。

可能的值:

none

不丢弃任何框架。

default

丢弃无用的帧,例如 0 大小的帧。

noref

丢弃所有非参考帧。

bidir

丢弃所有双向帧。

nokey

丢弃除关键帧之外的所有帧。

nointra

丢弃除 I 帧之外的所有帧。

all

丢弃所有帧。

默认值为 '默认'。

bidir_refine integer (encoding,video)

细化双向宏块中使用的两个运动矢量。

keyint_min integer (encoding,video)

设置 IDR 帧之间的最小间隔。

refs integer (encoding,video)

设置参考帧以考虑运动补偿。

trellis integer (encoding,audio,video)

设置率失真最佳量化。

mv0_threshold integer (encoding,video)
compression_level integer (encoding,audio,video)
bits_per_raw_sample integer
channel_layout integer (decoding/encoding,audio)

可能的值:

request_channel_layout integer (decoding,audio)

可能的值:

rc_max_vbv_use float (encoding,video)
rc_min_vbv_use float (encoding,video)
color_primaries integer (decoding/encoding,video)

可能的值:

bt709

BT.709

bt470m

BT.470M

bt470bg

BT.470 BG

smpte170m

SMPTE 170M

smpte240m

SMPTE 240M

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 integer (decoding/encoding,video)

可能的值:

bt709

BT.709

gamma22

BT.470M

gamma28

BT.470 BG

smpte170m

SMPTE 170M

smpte240m

SMPTE 240M

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 integer (decoding/encoding,video)

可能的值:

rgb

RGB

bt709

BT.709

fcc

美国联邦通信委员会

bt470bg

BT.470 BG

smpte170m

SMPTE 170M

smpte240m

SMPTE 240M

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

心电图

color_range integer (decoding/encoding,video)

如果用作输入参数,它会向解码器提示输入的 color_range。可能的值:

tv
mpeg
limited

MPEG (219*2^(n-8))

pc
jpeg
full

JPEG (2^n-1)

chroma_sample_location integer (decoding/encoding,video)

可能的值:

left
center
topleft
top
bottomleft
bottom
log_level_offset integer

设置日志级别偏移量。

slices integer (encoding,video)

并行编码中使用的切片数量。

thread_type flags (decoding/encoding,video)

选择要使用的多线程方法。

用于 '框架' 将增加每个线程一帧的解码延迟,因此无法提供未来帧的客户端不应使用它。

可能的值:

slice

一次解码一帧的多个部分。

仅当使用切片对视频进行编码时,使用切片的多线程才有效。

frame

一次解码多于一帧。

默认值为 '切片+帧'。

audio_service_type integer (encoding,audio)

设置音频服务类型。

可能的值:

ma

主要音频服务

ef

效果

vi

视障人士

hi

听力障碍

di

对话

co

评论

em

紧急情况

vo

画外音

ka

卡拉OK

request_sample_fmt sample_fmt (decoding,audio)

设置音频解码器应该首选的样本格式。默认值为 none

pkt_timebase rational number
sub_charenc encoding (decoding,subtitles)

设置输入字幕的字符编码。

field_order field_order (video)

设置/覆盖视频的场序。可能的值:

progressive

渐进式视频

tt

隔行扫描视频,顶场编码并首先显示

bb

隔行扫描视频,底场编码并先显示

tb

隔行视频,顶部编码优先,底部优先显示

bt

隔行扫描视频,底部编码优先,顶部优先显示

skip_alpha bool (decoding,video)

设置为 1 以禁用处理 Alpha(透明度)。这就像'灰色的' 中的标志旗帜跳过色度信息而不是 alpha 的选项。默认值为 0。

codec_whitelist list (input)

“,”分隔允许的解码器列表。默认情况下,所有内容都是允许的。

dump_separator string (input)

分隔符用于分隔命令行上打印的有关流参数的字段。例如,要使用换行符和缩进分隔字段:

ffprobe -dump_separator "
                          "  -i ~/videos/matrixbench_mpeg2.mpg
max_pixels integer (decoding/encoding,video)

每个图像的最大像素数。该值可用于避免由于大图像导致的内存不足故障。

apply_cropping bool (decoding,video)

如果裁剪参数是左侧和顶部参数所需对齐的倍数,则启用裁剪。如果不符合对齐方式,将进行部分裁剪以保持对齐。默认值为 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 视频 1 (AV1) 解码器。

4.1.1 选项

operating_point

选择可扩展 AV1 比特流的操作点 (0 - 31)。默认值为 0。

4.2 rawvideo

原始视频解码器。

该解码器对原始视频流进行解码。

4.2.1 选项

top top_field_first

指定输入视频的假定字段类型。

-1

视频被假定为渐进式(默认)

0

假设底场优先

1

假设顶场优先

4.3 libdav1d

dav1d AV1 解码器。

libdav1d 允许 libavcodec 解码 AOMedia Video 1 (AV1) 编解码器。需要在配置过程中存在 libdav1d 标头和库。您需要使用 显式配置构建--enable-libdav1d

4.3.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.4 libdavs2

AVS2-P2/IEEE1857.4 视频解码器包装器。

该解码器允许 libavcodec 使用 davs2 库解码 AVS2 流。

4.5 libuavs3d

AVS3-P2/IEEE1857.10视频解码器。

libuavs3d 允许 libavcodec 解码 AVS3 流。需要在配置过程中存在 libuavs3d 标头和库。您需要使用 显式配置构建--enable-libuavs3d

4.5.1 选项

libuavs3d 包装器支持以下选项。

frame_threads

设置解码期间要使用的帧线程数量。默认值为 0(自动检测)。

4.6 QSV Decoders

英特尔 QuickSync 视频解码器系列(VC1、MPEG-2、H.264、HEVC、JPEG/MJPEG、VP8、VP9、AV1)。

4.6.1 常用选项

所有 qsv 解码器都支持以下选项。

async_depth

内部并行化深度,值越高,延迟越高。

gpu_copy

视频和系统内存之间的 GPU 加速复制

default
on
off

4.6.2 HEVC 选项

hevc_qsv 的额外选项。

load_plugin

用于在内部会话中加载的用户插件

none
hevc_sw
hevc_hw
load_plugins

:-要在内部会话中加载的十六进制插件 UID 的单独列表

4.7 v210

未压缩的 4:2:2 10 位解码器。

4.7.1 选项

custom_stride

设置 v210 数据的行大小(以字节为单位)。默认值为 0(自动检测)。您可以对无步幅 v210 使用特殊的 -1 值,如 BOXX 文件中所示。

5 个音频解码器

下面是一些当前可用的音频解码器的描述。

5.1 ac3

AC-3 音频解码器。

该解码器实现了 ATSC A/52:2010 和 ETSI TS 102 366 的一部分,以及未记录的 RealAudio 3(又名 dnet)。

5.1.1 AC-3 解码器选项

-drc_scale value

动态范围比例因子。应用于 AC-3 流的动态范围值的系数。该因子以指数方式应用。默认值为 1。有 3 个值得注意的比例因子范围:

drc_scale == 0

刚果民主共和国禁用。产生全频音频。

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 解码互联网低比特率编解码器 (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 path

设置 libaribb24 库的基本路径。这用于读取配置文件(用于自定义 unicode 转换),以及将非文本符号转储为该位置下的图像。

默认情况下取消设置。

-aribb24-skip-ruby-text boolean

告诉解码器包装器跳过包含半高 ruby​​ 文本的文本块。

默认启用。

6.2 libaribcaption

另一个使用外部libaribcaption 库的 ARIB STD-B24 字幕解码器。

实现日本 ARIB STD-B24 标准、巴西 ABNT NBR 15606-1 和菲律宾版本 ISDB-T 的配置文件 A 和 C。

需要在配置过程中存在 libaribcaption 标头和库 ( https://github.com/xqq/libaribcaption )。您需要使用 显式配置构建--enable-libaribcaption。如果同时启用libaribb24libaribcaption ,则libaribcaption 解码器优先。

6.2.1 libaribcaption 解码器选项

-sub_type subtitle_type

指定解码字幕的格式。

bitmap

图形图像。

ass

ASS 格式的文本。

text

基于简单文本的输出,无需格式化。

默认为ass ,与libaribb24解码器相同。一些现有的播放器(例如mpv)希望 ARIB 字幕采用 ASS 格式。

-caption_encoding encoding_scheme

指定输入字幕文本的编码方案。

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 font_name[,font_name2,...]

指定用于位图ass类型字幕渲染的字体系列名称的逗号分隔列表。屁股类型字幕仅使用第一个字体名称。

如果未指定,则使用内部定义的默认字体系列。

-ass_single_rect boolean

ARIB STD-B24 规定某些字幕可以一次显示在不同的位置(多矩形字幕)。由于某些播放器(例如,旧的mpv)无法处理单个 AVSubtitle 中的多个 ASS 矩形,或者具有相同开始时间戳的不确定持续时间的多个 ASS 矩形,因此此选项可以更改行为,以便所有文本都显示在单个 AVSubtitle 中ASS 矩形。

默认为false

如果您的播放器无法正确处理具有多个 ASS 矩形的 AVSubtitles,请将此选项设置为true或定义ASS_SINGLE_RECT=1以更改编译时的默认行为。

-force_outline_text boolean

指定是否始终为所有字符呈现轮廓文本,而不管字符样式的指示如何。

默认为false

-outline_width number (0.0 - 3.0)

指定轮廓文本的宽度,以点(相对)为单位。

默认值为1.5

-ignore_background boolean

指定是否忽略背景颜色渲染。

默认为false

-ignore_ruby boolean

指定是否忽略类拼音(注音假名)字符的渲染。

默认为false

-replace_drcs boolean

指定是否将替换的 DRCS 字符呈现为 Unicode 字符。

默认值为true

-replace_msz_ascii boolean

指定是否用半角字母数字替换 MSZ(中号;半角)全角字母数字。

默认值为true

-replace_msz_japanese boolean

指定是否将某些 MSZ(中号;半角)全角日语特殊字符替换为半角字符。

默认值为true

-replace_msz_glyph boolean

指定是否用半角字形替换 MSZ(中号;半角)字符(如果字体支持)。此选项适用于具有 Adob​​e-Japan1 兼容字体的 FreeType 或 DirectWrite 渲染器。例如,IBM Plex Sans JP、Morisawa BIZ UDGothic、Morisawa BIZ UDMincho、Yu Gothic、Yu Mincho 和 Meiryo。

默认值为true

-canvas_size image_size

指定渲染字幕的画布的分辨率;通常,这应该是输入视频的帧大小。-subtitle_type这仅在设置为bitmap时适用。

libaribcaption 解码器假定位图渲染的输入帧大小如下:

  1. PROFILE_A:1440 x 1080,SAR (PAR) 4:3
  2. PROFILE_C:320 x 180,SAR (PAR) 1:1

如果输入视频的实际帧大小与上述假设不匹配,则渲染的字幕可能会失真。为了使字幕不失真,请添加-canvas_size选项来指定实际输入视频大小。

请注意,-canvas_size对于不同尺寸但相同宽高比的视频,不需要该选项。-canvas_size在这种情况下,如果未指定选项,字幕将拉伸或缩小到实际视频大小。如果-canvas_size选项指定了不同的大小,则标题将根据计算的 SAR 拉伸或收缩为指定的大小。

6.2.2 libaribcaption解码器使用示例

通过工具显示带有ARIB字幕的MPEG-TS文件ffplay

ffplay -sub_type bitmap MPEG.TS

通过工具显示输入帧大小为1920x1080的MPEG-TS文件ffplay

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_透明未设置,它仅影响开始框和结束框之间的字符,通常是字幕。默认值为 0,如果 txt_透明已设置,否则为 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该选项仅在使用命令行工具时有效。对于库界面用户,请使用 全局质量

cutoff

设置截止频率。如果未指定,将允许编码器动态调整截止以提高低比特率的清晰度。

aac_coder

设置AAC编码器的编码方式。可能的值:

twoloop

两种循环搜索(TLS)方法。这是默认方法。

该方法首先根据频带阈值设置量化器,然后尝试通过从所有量化器中添加或减去特定值并稍微调整一些单独的量化器来找到最佳组合。将根据是否调整自身aac_is,aac_msaac_pns 已启用。

anmr

基于平均噪声掩模比 (ANMR) 网格的解决方案。

这是一个实验性编码器,目前产生的质量较低,更不稳定,并且比默认的双循环编码器慢,但具有潜力。目前不支持aac_is或者aac_pns选项。目前不推荐。

fast

恒定量化器方法。

使用更便宜的双循环算法版本,不会尝试进行许多巧妙的调整。低比特率(低于 64kbps)时情况更糟,但较高比特率时更好、更快。

aac_ms

设置中/侧编码模式。默认值“auto”将自动使用 M/S 和频段,这将受益于此类编码。可以使用“enable”值对所有频段强制启用,这主要用于调试或使用“disable”禁用。

aac_is

设置强度立体声编码工具的使用。默认情况下,它是启用的,如果有好处的话,它会自动切换相似的立体声频段对的 IS。可以通过将值设置为“disable”来禁用调试。

aac_pns

在解码过程中使用感知噪声替代,用难以察觉的白噪声替换低熵高频段。默认情况下,它是启用的,但可以使用“disable”将其禁用以进行调试。

aac_tns

允许使用跨越高频带的多抽头 FIR 滤波器,以隐藏编码过程中的量化噪声,并由解码器恢复。除了减少高频段中令人不快的伪影之外,这还减少了高频段的熵,并允许中低频段使用更多的比特。默认情况下它是启用的,但可以通过将选项设置为“禁用”来禁用调试。

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 and ac3_fixed

AC-3 音频编码器。

这些编码器实现了 ATSC A/52:2010 和 ETSI TS 102 366 的一部分,以及未记录的 RealAudio 3(又名 dnet)。

ac3编码器使用浮点数学,而ac3_fixed 编码器仅使用定点整数数学。这并不意味着其中一种总是更快,只是其中一种可能更适合特定系统。ac3_fixed编码器不是任何输出格式的默认编解码器,因此必须使用该选项显式指定它 -acodec ac3_fixed才能使用它。

8.2.1 AC-3 元数据

AC-3 元数据选项用于设置描述音频的参数,但在大多数情况下不会影响音频编码本身。有些选项确实会直接影响或影响结果比特流的解码和播放,而其他选项仅用于提供信息。一些选项会将位添加到输出流中,否则这些位可用于音频数据,从而影响输出的质量。这些将在下面的选项列表中相应地用注释表示。

这些参数在几个公开的文档中有详细描述。

8.2.1.1 元数据控制选项

-per_frame_metadata boolean

允许每帧元数据。指定编码器是否应检查每个帧的元数据更改。

0

初始化时设置的元数据值将用于流中的每个帧。(默认)

1

在对每个帧进行编码之前可以更改元数据值。

8.2.1.2 缩混级别

-center_mixlev level

中心混合级别。缩混为立体声时解码器应应用于中央通道的增益量。仅当存在中央通道时,该字段才会写入比特流。该值被指定为比例因子。有 3 个有效值:

0.707

应用-3dB增益

0.595

应用 -4.5dB 增益(默认)

0.500

应用-6dB增益

-surround_mixlev level

环绕声混音级别。缩混为立体声时解码器应应用于环绕声道的增益量。仅当存在一个或多个环绕声道时,该字段才会写入比特流。该值被指定为比例因子。有 3 个有效值:

0.707

应用-3dB增益

0.500

应用 -6dB 增益(默认)

0.000

静音环绕声道

8.2.1.3 音频制作信息

音频制作信息是描述混合环境的可选信息。这些字段要么不写入,要么全部写入比特流。

-mixing_level number

混合级别。指定制作环境中混音掌握时的峰值声压级 (SPL)。有效值为 80 到 111,或 -1 表示未知或未指示。默认值为 -1,但如果音频制作信息写入比特流,则无法使用该值。因此,如果该room_type选项不是默认值,则该mixing_level 选项不能为-1。

-room_type type

房型。描述在工作室或配音阶段的最终混音过程中使用的均衡。一个大房间是一个配音舞台,具有行业标准的X曲线均衡;小房间有平坦的均衡。mixing_level 如果选项和room_type选项都具有默认值, 则该字段不会写入比特流。

0
notindicated

未指定(默认)

1
large

大房间

2
small

小房间

8.2.1.4 其他元数据选项

-copyright boolean

版权指示器。指定该音频是否存在版权。

0
off

不存在版权(默认)

1
on

版权存在

-dialnorm value

对话正常化。指示节目的平均对话电平低于数字 100% 满量程 (0 dBFS) 的程度。该参数确定音频再现期间的电平移动,将对话的平均音量设置为预设电平。目标是匹配节目源之间的音量级别。-31dB 的值将导致在音频再现期间相对于源音量没有音量级别变化。有效值为 -31 到 -1 范围内的整数,默认值为 -31。

-dsur_mode mode

杜比环绕模式。指定立体声信号是否使用 Dolby Surround (Pro Logic)。仅当音频流是立体声时,该字段才会写入比特流。使用此选项并不意味着编码器将实际应用杜比环绕声处理。

0
notindicated

未指定(默认)

1
off

非杜比环绕编码

2
on

杜比环绕编码

-original boolean

原始比特流指示器。指定此音频是否来自原始来源而不是副本。

0
off

非原始来源

1
on

原始来源(默认)

8.2.2 扩展比特流信息

扩展比特流选项是 A/52:2010 标准附件 D 中指定的备用比特流语法的一部分。它分为 2 部分。如果指定了一组中的任何一个参数,则该组中的所有值都将写入比特流。默认值用于已写入但未指定的值。如果写入了混合级别,并且解码器支持备用比特流语法,则 解码器将使用这些值而不是center_mixlev 和选项中指定的值。surround_mixlev

8.2.2.1 扩展比特流信息 - 第 1 部分

-dmix_mode mode

首选立体声缩混模式。允许用户选择 Lt/Rt(杜比环绕声)或 Lo/Ro(正常立体声)作为首选立体声缩混模式。

0
notindicated

未指定(默认)

1
ltrt

Lt/Rt 缩混首选

2
loro

Lo/Ro 缩混首选

-ltrt_cmixlev level

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 level

Lt/Rt 环绕声混音电平。在 Lt/Rt 模式下混音为立体声时,解码器应应用于环绕声道的增益量。

0.841

应用-1.5dB增益

0.707

应用-3.0dB增益

0.595

应用-4.5dB增益

0.500

应用 -6.0dB 增益(默认)

0.000

静音环绕声道

-loro_cmixlev level

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 level

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 mode

杜比环绕 EX 模式。指示流是否使用 Dolby Surround EX(7.1 矩阵化为 5.1)。使用此选项并不意味着编码器将实际应用 Dolby Surround EX 处理。

0
notindicated

未指定(默认)

1
on

杜比环绕 EX 关闭

2
off

杜比环绕 EX 开启

-dheadphone_mode mode

杜比耳机模式。指示流是否使用 Dolby Headphone 编码(多声道矩阵化为 2.0 以与耳机一起使用)。使用此选项并不意味着编码器将实际应用杜比耳机处理。

0
notindicated

未指定(默认)

1
on

杜比耳机关闭

2
off

杜比耳机开启

-ad_conv_type type

A/D 转换器类型。指示音频是否经过HDCD A/D转换。

0
standard

标准A/D转换器(默认)

1
hdcd

HDCD A/D 转换器

8.2.3 其他 AC-3 编码选项

-stereo_rematrixing boolean

立体声重新矩阵。启用/禁用立体声输入的重新矩阵。这是一项可选的 AC-3 功能,可通过选择性地将左/右通道编码为中/侧来提高质量。默认情况下启用此选项,强烈建议将其保留为启用状态,除非用于测试目的。

cutoff frequency

设置低通截止频率。如果未指定,编码器将选择由各种其他编码参数确定的默认值。

8.2.4 仅浮点 AC-3 编码选项

这些选项仅对浮点编码器有效,对于定点编码器不存在,因为相应的功能未在定点中实现。

-channel_coupling boolean

启用/禁用通道耦合的使用,这是一项可选的 AC-3 功能,可通过将多个通道的高频信息组合到单个通道中来提高质量。每通道高频信息在频域和时域上的发送精度都较低。这允许更多的比特用于较低的频率,同时保留足够的信息来重建高频。默认情况下,浮点编码器启用此选项,并且通常应保留启用状态,除非用于测试目的或提高编码速度。

-1
auto

由编码器选择(默认)

0
off

禁用通道耦合

1
on

启用通道耦合

-cpl_start_band number

耦合起始带。设置通道耦合起始频带,范围为 1 到 15。如果使用高于带宽的值,则会减少到比耦合结束频带小 1。如果使用自动,则起始频带将由编码器根据比特率、采样率和通道布局确定。如果禁用通道耦合,则此选项无效。

-1
auto

由编码器选择(默认)

8.3 flac

FLAC(免费无损音频编解码器)编码器

8.3.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

选择是精确计算还是近似计算大米参数。如果设置为 1,那么它们将被准确选择,这会稍微减慢代码速度并稍微提高压缩率。

multi_dim_quant

多维量化。如果设置为 1,则在第一阶段之后应用第二阶段 LPC 算法来微调系数。这非常慢并且稍微改善了压缩。

8.4 opus

Opus 编码器。

这是 Opus 格式的原生 FFmpeg 编码器。目前它正在开发中,仅实现编解码器的 CELT 部分。它的质量通常较差,最多相当于 libopus 编码器。

8.4.1 选项

b

设置比特率(以位/秒为单位)。如果未指定,它会使用通道数量和布局来进行良好的猜测。

opus_delay

设置最大延迟(以毫秒为单位)。低于 20 毫秒的延迟将很快降低质量。

8.5 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 编码,通过启用虚拟现实或者标志+qscaleoptions 是实验性的,仅适用于某些参数组合。

仅 libfdk-aac 0.1.3 或更高版本支持编码 7.1 音频。

有关更多信息,请参阅http://sourceforge.net/p/opencore-amr/fdk-aac/上的 fdk-aac 项目 。

8.5.1 选项

以下选项映射到共享 FFmpeg 编解码器选项。

b

设置比特率(以位/秒为单位)。如果未明确指定比特率,则会根据所选配置文件自动将其设置为合适的值。

如果启用了 VBR 模式,则该选项将被忽略。

ar

设置音频采样率(以 Hz 为单位)。

channels

设置音频通道数。

flags +qscale

启用固定质量、VBR(可变比特率)模式。请注意,当虚拟现实值为正。

cutoff

设置截止频率。如果未指定(或显式设置为 0),它将使用库自动计算的值。默认值为 0。

profile

设置音频配置文件。

可以识别以下配置文件:

aac_low

低复杂度 AAC (LC)

aac_he

高效加气混凝土 (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

显式分层信号

默认值为 '默认'。

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.5.2 示例

  • 用于ffmpeg将 M4A (MP4) 容器中的音频文件转换为 VBR AAC:
    ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a
    
  • 用于ffmpeg使用高效 AAC 配置文件将音频文件转换为 CBR 64k kbps AAC:
    ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
    

8.6 libmp3lame

LAME(Lame Ain't an MP3 Encoder)MP3 编码器包装。

需要在配置过程中存在 libmp3lame 标头和库。您需要使用 显式配置构建 --enable-libmp3lame

请参阅libshine了解定点 MP3 编码器,尽管质量较低。

8.6.1 选项

libmp3lame 包装器支持以下选项。lame括号中列出了等效的选项 。

b (-b)

设置 CBR 或 ABR 的比特率,以位/秒表示。LAMEbitrate以千比特/秒表示。

q (-V)

设置 VBR 的恒定质量设置。ffmpeg该选项仅在使用命令行工具时有效。对于库界面用户,请使用全局质量

compression_level (-q)

设置算法质量。有效参数是 0-9 范围内的整数,0 表示质量最高但最慢,9 表示最快但质量最差。

cutoff (--lowpass)

设置低通截止频率。如果未指定,编码器会动态调整截止。

reservoir

设置为 1 时启用位存储库的使用。默认值为 1。LAME 默认启用此功能,但可以通过使用来覆盖 ——诺雷斯选项。

joint_stereo (-m j)

使编码器能够使用(逐帧)L/R 立体声或中/侧立体声。默认值为 1。

abr (--abr)

设置为 1 时启用编码器使用 ABR。lame --abr设置目标比特率,虽然这个选项只是告诉FFmpeg使用ABR仍然依赖设置比特率。

copyright (-c)

设置为 1 时设置 MPEG 音频版权标志。默认值为 0(禁用)。

original (-o)

设置为 1 时设置 MPEG 音频原始标志。默认值为 1(启用)。

8.7 libopencore-amrnb

OpenCORE 自适应多速率窄带编码器。

需要在配置过程中存在 libopencore-amrnb 标头和库。您需要使用 显式配置构建 --enable-libopencore-amrnb --enable-version3

这是一个单声道编码器。官方仅支持 8000Hz 采样率,但您可以通过设置覆盖它严格的到 '非官方' 或更低。

8.7.1 选项

b

设置比特率(以每秒位数为单位)。仅支持以下比特率,否则 libavcodec 将四舍五入到最接近的有效比特率。

4750
5150
5900
6700
7400
7950
10200
12200
dtx

设置为 1 时允许间断传输(生成舒适噪音)。默认值为 0(禁用)。

8.8 libopus

libopus Opus 交互式音频编解码器编码器包装器。

需要在配置过程中存在 libopus 标头和库。您需要使用 显式配置构建 --enable-libopus

8.8.1 选项映射

大多数 libopus 选项都是根据opusencopus-tools 中的实用程序建模的。以下是选项映射表,描述了 libopus 包装器支持的选项以及opusenc括号中的等效选项。

b (bitrate)

设置比特率(以位/秒为单位)。FFmpeg 的选项以位/秒表示,而opusencs比特率以千比特/秒为单位。

vbr (vbr, hard-cbr, and cvbr)

设置变码模式。FFmpeg虚拟现实选项具有以下有效参数,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)

启用带内前向纠错。数据包丢失必须非零才能利用 - FEC“辅助数据”的频率与预期的数据包丢失成正比。默认为禁用。

application (N.A.)

设置预期的应用程序类型。下面列出了有效选项:

voip

有利于提高语音清晰度。

audio

支持忠实于输入(默认)。

lowdelay

通过禁用语音优化模式,仅限制最低延迟模式。

cutoff (N.A.)

设置截止带宽(以 Hz 为单位)。该参数必须是以下之一:4000、6000、8000、12000或20000,分别对应窄带、中带、宽带、超宽带和全带。默认值为 0(禁用截止)。请注意,libopus 强制对比特率 < 15 kbps 进行宽带截止,除非仅限 CELT(应用设置 '低延迟') 模式被使用。

mapping_family (mapping_family)

设置编码器要使用的通道映射系列。默认值 -1 对单声道和立体声输入使用映射系列 0,否则使用映射系列 1。默认情况下还会禁用 libopus 中的环绕声掩蔽和 LFE 带宽优化,并要求输入包含 8 个或更少的通道。

其他值包括 0(表示单声道和立体声)、1(表示具有掩蔽和 LFE 带宽优化的环绕声)以及 255(表示具有未指定通道布局的独立流)。

apply_phase_inv (N.A.) (requires libopus >= 1.2)

如果设置为 0,则禁用强度立体声的相位反转,提高单声道缩混的质量,但会稍微降低正常立体声质量。默认值为 1(启用相位反转)。

8.9 libshine

Shine 定点 MP3 编码器包装。

Shine 是一个定点 MP3 编码器。它在没有 FPU 的平台(例如,armel CPU 以及某些手机和平板电脑)上具有更好的性能。然而,由于它更注重性能而不是质量,因此它在质量方面无法与 LAME 和其他生产级编码器相提并论。此外,根据该项目的主页,该编码器可能不存在错误,因为代码是很久以前编写的,并且该项目已经死亡至少 5 年了。

该编码器仅支持立体声和单声道输入。这也是仅限 CBR 的。

原始项目(最后更新于 2007 年初)位于 http://sourceforge.net/projects/libshine-fxp/我们仅支持https://github.com/savonet/shine上的 Savonet/Liquidsoap 项目更新的分支。

需要在配置过程中存在 libshine 标头和库。您需要使用 显式配置构建 --enable-libshine

另请参见libmp3lame

8.9.1 选项

libshine 包装器支持以下选项。shineenc括号中列出了等效的选项 。

b (-b)

设置 CBR 的比特率,以位/秒表示。shineenc -b选项以千位/秒表示。

8.10 libtwolame

TwoLAME MP2 编码器包装。

需要在配置过程中存在 libtwolame 标头和库。您需要使用 显式配置构建 --enable-libtwolame

8.10.1 选项

libtwolame 包装器支持以下选项。- twolame等效选项遵循 FFmpeg 选项并位于括号内。

b (-b)

设置 CBR 的比特率,以位/秒表示。twolame 选项以千位/秒表示。默认值为 128k。

q (-V)

设置实验性 VBR 支持的质量。最大值范围是-50到50,有用范围是-10到10。值越高,质量越好。ffmpeg该选项仅在使用命令行工具时有效 。对于库界面用户,请使用全局质量

mode (--mode)

设置生成的音频的模式。可能的值:

auto

根据输入自动选择模式。这是默认设置。

stereo

立体声

joint_stereo

联合立体声

dual_channel

双通道

mono

单核细胞增多症

psymodel (--psyc-mode)

设置用于编码的心理声学模型。参数必须是 -1 到 4 之间的整数(包含 -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.11 libvo-amrwbenc

VisualOn 自适应多速率宽带编码器。

需要在配置期间存在 libvo-amrwbenc 标头和库。您需要使用 显式配置构建 --enable-libvo-amrwbenc --enable-version3

这是一个单声道编码器。官方仅支持 16000Hz 采样率,但您可以通过设置覆盖它严格的到 '非官方' 或更低。

8.11.1 选项

b

设置比特率(以位/秒为单位)。仅支持以下比特率,否则 libavcodec 将四舍五入到最接近的有效比特率。

6600
8850
12650
14250
15850
18250
19850
23050
23850
dtx

设置为 1 时允许间断传输(生成舒适噪音)。默认值为 0(禁用)。

8.12 libvorbis

libvorbis 编码器包装器。

需要在配置期间存在 libvorbisenc 标头和库。您需要使用 显式配置构建 --enable-libvorbis

8.12.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该选项仅在使用命令行工具时有效。对于库界面用户,请使用全局质量

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.13 mjpeg

运动 JPEG 编码器。

8.13.1 选项

huffman

设置霍夫曼编码策略。可能的值:

default

使用默认的霍夫曼表。这是默认策略。

optimal

计算并使用最佳霍夫曼表。

8.14 wavpack

WavPack 无损音频编码器。

8.14.1 选项

命令行实用程序的等效选项wavpack列在括号中。

8.14.1.1 共享选项

以下共享选项对此编码器有效。此处仅记录有关此特定编码器的特殊说明。有关选项的一般含义,请参阅编解码器选项一章

frame_size (--blocksize)

对于该编码器,该选项的范围在 128 到 131072 之间。默认值是根据采样率和通道数自动决定的。

完整的违约计算公式请参见 libavcodec/wavpackenc.c

compression_level (-f, -h, -hh, and -x)

8.14.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扩展为第五种颜色(colram)。

9.2 Cinepak

Cinepak 又名 CVID 编码器。与 Windows 3.1 和老式 MacOS 兼容。

9.2.1 选项

g integer

关键帧间隔。至少每-g帧插入一个关键帧,有时甚至更快。

q:v integer

品质因数。越低越好。比特率越高,比特率越低。下表列出了使用不同值对 akiyo_cif.y4m 进行编码时的比特-q:v-g 100

-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 integer

最大额外的码本重新计算次数,越多越好但越慢。

skip_empty_cb boolean

避免浪费字节,忽略老式 MacOS 解码器。

max_strips integer
min_strips integer

要使用的最小和最大条数。更大的范围有时可以提高质量。更多条带通常质量更好,但成本更高。较少的条带往往会产生更多的关键帧。复古兼容是 1..3。

strip_number_adaptivity integer

帧之间允许改变多少条带数。越高越好但越慢。

9.3 GIF

GIF 图像/动画编码器。

9.3.1 选项

gifflags integer

设置用于 GIF 编码的标志。

offsetting

启用图片偏移。

默认启用。

transdiff

启用帧之间的透明度检测。

默认启用。

gifimage integer

启用每帧编码一个完整的 GIF 图像,而不是动画 GIF。

默认值为0

global_palette integer

如果可行,将调色板写入全局 GIF 标头。

如果禁用,即使提供了全局调色板,每个帧也将始终写入一个调色板。

默认值为1

9.4 Hap

Vidvox Hap 视频编码器。

9.4.1 选项

format integer

指定要编码的 Hap 格式。

hap
hap_alpha
hap_q

默认值为哈普

chunks integer

指定将帧分割成的块数,介于 1 和 64 之间。这允许对大帧进行多线程解码,但可能会牺牲数据速率。编码器可以修改该值以均匀地划分帧。

默认值为1

compressor integer

指定要使用的第二级压缩机。如果设置为没有任何, 将限制为 1,因为分块的未压缩帧没有任何好处。

none
snappy

默认值为活泼的

9.5 jpeg2000

原生 jpeg 2000 编码器默认是有损的,该-q:v 选项可用于设置编码质量。可以使用 来选择无损编码-pred 1

9.5.1 选项

format integer

可以设置为j2kjp2(默认值),从而可以存储非 RGB pix_fmts。

tile_width integer

设置图块宽度。范围为 1 到 1073741824。默认值为 256。

tile_height integer

设置图块高度。范围是 1 到 1073741824。默认值为 256。

pred integer

允许设置离散小波变换 (DWT) 类型

dwt97int (Lossy)
dwt53 (Lossless)

默认为dwt97int

sop boolean

启用此选项可在每个数据包的开头添加 SOP 标记。默认禁用。

eph boolean

启用此选项可在每个数据包标头的末尾添加 EPH 标记。默认禁用。

prog integer

设置编码器要使用的进展顺序。可能的值为:

lrcp
rlcp
rpcl
pcrl
cprl

设置lrcp为默认。

layer_rates string

默认情况下,当不使用此选项时,将使用质量指标进行压缩。此选项允许使用压缩比进行压缩。可以指定每个级别的压缩比。层的压缩比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

使用以“:”分隔的=对列表设置 rav1e 选项。请参阅rav1e --help参考资料 中的选项列表。

例如,指定 librav1e 编码选项-rav1e-参数:

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

设置比特率目标(以位/秒为单位)。默认情况下,这将使用可变比特率模式。如果最大速率最低利率也设置为相同的值,那么它将使用恒定比特率模式,否则如果crf也已设置,那么它将使用约束质量模式。

g keyint_min

设置关键帧位置。GOP大小设置关键帧之间的最大距离;如果为零,则输出流将仅是内部的。除非最小距离与 GOP 大小相同,否则将忽略最小距离,在这种情况下关键帧将始终以固定间隔出现。默认情况下未设置,因此如果没有此选项,库可以完全自由选择关键帧的放置位置。

qmin qmax

设置最小/最大量化值。有效范围为 0 到 63(警告:这与 AV1 实际使用的量化器值不匹配 - 除以四以将实际量化器值映射到此范围)。默认为最小/最大(无限制)。

minrate maxrate bufsize rc_init_occupancy

设置速率控制缓冲参数。如果未设置则不使用 - 默认为不受约束的可变比特率。

threads

设置编码时使用的线程数。这可能需要 瓷砖或者行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 (boolean)

启用帧并行解码功能。默认为 true。

tiles

设置用于对输入视频进行编码的图块数量,如列 x 行。数字越大,编码和解码的并行性就越高,但可能会降低编码效率。默认为输入视频大小所需的最小图块数量(对于 4K 及以下尺寸,此为 1x1(即单个图块))。

tile-columns tile-rows

将图块数量设置为图块行数和列数的 log2。提供与 libvpx/VP9 的兼容性。

row-mt (Requires libaom >= 1.0.0-759-g90a15f4f2)

启用基于行的多线程。默认禁用。

enable-cdef (boolean)

启用约束方向增强过滤器。libaom-av1 编码器默认启用 CDEF。

enable-restoration (boolean)

启用循环恢复过滤器。libaom-av1 的默认值为 true。

enable-global-motion (boolean)

启用全局运动进行块预测。默认为 true。

enable-intrabc (boolean)

启用块复制模式以进行块内预测。此模式对于屏幕内容很有用。默认为 true。

enable-rect-partitions (boolean) (Requires libaom >= v2.0.0)

启用矩形分区。默认为 true。

enable-1to4-partitions (boolean) (Requires libaom >= v2.0.0)

启用 1:4/4:1 分区。默认为 true。

enable-ab-partitions (boolean) (Requires libaom >= v2.0.0)

启用 AB 形状分区。默认为 true。

enable-angle-delta (boolean) (Requires libaom >= v2.0.0)

启用角度增量帧内预测。默认为 true。

enable-cfl-intra (boolean) (Requires libaom >= v2.0.0)

启用从亮度帧内预测预测色度。默认为 true。

enable-filter-intra (boolean) (Requires libaom >= v2.0.0)

启用过滤器帧内预测器。默认为 true。

enable-intra-edge-filter (boolean) (Requires libaom >= v2.0.0)

启用内部边缘过滤器。默认为 true。

enable-smooth-intra (boolean) (Requires libaom >= v2.0.0)

启用平滑帧内预测模式。默认为 true。

enable-paeth-intra (boolean) (Requires libaom >= v2.0.0)

在帧内预测中启用路径预测器。默认为 true。

enable-palette (boolean) (Requires libaom >= v2.0.0)

启用调色板预测模式。默认为 true。

enable-flip-idtx (boolean) (Requires 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 (boolean) (Requires libaom >= v2.0.0)

启用 64 点变换。默认为 true。

reduced-tx-type-set (boolean) (Requires libaom >= v2.0.0)

使用减少的变换类型集。默认为 false。

use-intra-dct-only (boolean) (Requires libaom >= v2.0.0)

仅对 INTRA 模式使用 DCT。默认为 false。

use-inter-dct-only (boolean) (Requires libaom >= v2.0.0)

仅对 INTER 模式使用 DCT。默认为 false。

use-intra-default-tx-only (boolean) (Requires libaom >= v2.0.0)

仅对 INTRA 模式使用默认变换。默认为 false。

enable-ref-frame-mvs (boolean) (Requires libaom >= v2.0.0)

启用时间 mv 预测。默认为 true。

enable-reduced-reference-set (boolean) (Requires libaom >= v2.0.0)

使用减少的单一和复合参考集。默认为 false。

enable-obmc (boolean) (Requires libaom >= v2.0.0)

启用 obmc。默认为 true。

enable-dual-filter (boolean) (Requires libaom >= v2.0.0)

启用双过滤器。默认为 true。

enable-diff-wtd-comp (boolean) (Requires libaom >= v2.0.0)

启用差异加权复合。默认为 true。

enable-dist-wtd-comp (boolean) (Requires libaom >= v2.0.0)

启用距离加权复合。默认为 true。

enable-onesided-comp (boolean) (Requires libaom >= v2.0.0)

启用一侧复合。默认为 true。

enable-interinter-wedge (boolean) (Requires libaom >= v2.0.0)

启用间楔复合。默认为 true。

enable-interintra-wedge (boolean) (Requires libaom >= v2.0.0)

启用内部楔形复合。默认为 true。

enable-masked-comp (boolean) (Requires libaom >= v2.0.0)

启用蒙版复合。默认为 true。

enable-interintra-comp (boolean) (Requires libaom >= v2.0.0)

启用内部复合。默认为 true。

enable-smooth-interintra (boolean) (Requires libaom >= v2.0.0)

启用平滑帧内模式。默认为 true。

aom-params

使用以“:”分隔的=对列表设置 libaom 选项。有关受支持选项的列表,请参阅aomenc --help“AV1 特定选项”部分。

例如,指定 libaom 编码选项-aom-参数:

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 速率控制模式中使用的恒定速率因子值 (0-63)。

qp

设置 cqp 速率控制模式中使用的量化器 (0-63)。

sc_detection

启用场景变化检测。

la_depth

设置向前查看的帧数 (0-120)。

preset

设置质量与速度的权衡,范围为 0 到 13。值越高速度越快,但质量较低。

tile_rows

设置要使用的图块行数的 log2 (0-6)。

tile_columns

设置要使用的图块列数的 log2 (0-4)。

svtav1-params

使用以“:”分隔的=对列表设置 SVT-AV1 选项。有关可接受参数的列表,请参阅 SVT-AV1 编码器用户指南。

9.9 libjxl

libjxl JPEG XL 编码器包装器。

需要在配置过程中存在 libjxl 标头和库。您需要使用 显式配置构建 --enable-libjxl

9.9.1 选项

libjxl 包装器支持以下选项:

distance

设置目标 Butteraugli 距离。这是一个质量设置:距离越短,质量越高,距离=1.0 大致相当于摄影内容的 libjpeg 质量 90。设置 distance=0.0 会产生真正的无损编码。有效值范围在 0.0 到 15.0 之间,正常值很少超过 5.0。设置 distance=0.1 通常可以使大多数输入保持透明。默认值为 1.0。

effort

设置使用的编码工作。较高的工作量值会产生更一致的质量,并且通常会产生更好的质量/bpp 曲线,但代价是需要更多的 CPU 时间。有效值范围为 1 到 9,默认值为 7。

modular

强制编码器使用模块化模式而不是自动选择。默认情况下使用 VarDCT 进行有损编码,使用 Modular 进行无损编码。VarDCT 在有损编码方面通常优于 Modular,但不支持无损编码。

9.10 libkvazaar

Kvazaar H.265/HEVC 编码器。

需要在配置过程中存在 libkvazaar 标头和库。您需要显式配置构建 --启用libkvazaar

9.10.1 选项

b

设置目标视频比特率(以位/秒为单位)并启用速率控制。

kvazaar-params

将 kvazaar 参数设置为以逗号 (,) 分隔的名称=对列表。有关选项列表,请参阅 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。仅在以下情况下使用切片模式被设定为 '固定的'。

loopfilter

启用环路滤波器,如果设置为 1(自动启用)。要禁用,请将值设置为 0。

profile

设置个人资料限制。如果设置为 ' 的值主要的' 启用 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

用于通过以下方式启用恒定质量模式 (VBR) 编码 质量尺度标志,并启用pass1pass2 模式。

g

设置 GOP 大小。

global_quality

将全局质量设置为 lambda 单位的整数。

仅当使用 启用 VBR 模式时相关flags +qscale。该值通过除以 来转换为 QP 单位FF_QP2LAMBDA,剪裁在 [0 - 10] 范围内,然后乘以 6.3 以获得本机 libtheora 范围 [0-63] 内的值。较高的值对应于较高的质量。

q

设置为非负值时启用 VBR 模式,并将恒定质量值设置为 QP 单位的双浮点值。

该值被剪裁在 [0-10] 范围内,然后乘以 6.3 以获得本机 libtheora 范围 [0-63] 内的值。

ffmpeg该选项仅在使用命令行工具时有效。对于库界面用户,请使用全局质量

9.12.2 示例

  • 设置最大恒定质量 (VBR) 编码ffmpeg
    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-vp9vpxenc --help。更多信息请参阅 libvpx API 文档。

b (target-bitrate)

设置比特率(以位/秒为单位)。请注意 FFmpeg 的选项以位/秒表示,而vpxencs目标比特率单位为千比特/秒。

g (kf-max-dist)
keyint_min (kf-min-dist)
qmin (min-q)

最小(最佳质量)量化器。

qmax (max-q)

最大(最差质量)量化器。可以每帧更改。

bufsize (buf-sz, buf-optimal-sz)

设置速率控制缓冲区大小(以位为单位)。Notevpxenc的选项以毫秒为单位指定,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使用选项。

realtime

使用实时质量截止日期。

speed, cpu-used (cpu-used)

设置质量/速度比调节器。较高的值会加快编码速度,但会牺牲质量。

nr (noise-sensitivity)
static-thresh

设置块的更改阈值,低于该阈值的块将被编码器跳过。

slices (token-parts)

请注意 FFmpeg 的切片选项给出分区的总数,而vpxenc's令牌部分给出为 log2(partitions).

max-intra-rate

将最大 I 帧比特率设置为目标比特率的百分比。值 0 表示无限制。

force_key_frames

VPX_EFLAG_FORCE_KF

Alternate reference frame related
auto-alt-ref

启用备用参考系的使用(仅限 2 遍)。大于 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 integer

以降低 PSNR 为代价来提高清晰度。有效范围为 [0, 7]。

ts-parameters

使用 : 分隔的键=值对列表设置时间可伸缩性配置。例如,要使用以下命令指定时间可伸缩性参数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

下面是对各个参数的简单解释,更多详细信息 struct vpx_codec_enc_cfg请参阅。vpx/vpx_encoder.h

ts_number_layers

时间编码层的数量。

ts_target_bitrate

每个时间层的目标比特率(以 kbps 为单位)。(比特率应包含较低的时间层)。

ts_rate_decimator

每个时间层的帧率抽取因子。

ts_periodicity

定义帧时间层成员资格的序列长度。

ts_layer_id

定义帧到时间层的成员资格的模板。

ts_layering_mode

(可选)从一组预定义的时间分层模式中选择时间结构。目前支持以下选项。

0

metadata内部没有提供时间分层标志,依赖于使用带有以下键的字段传入的标志AVFrame

vp8-flags

设置传递到编码器的标志以指示当前帧的参考方案。有关更多详细信息, 请参阅 中的函数vpx_codec_encodevpx/vpx_encoder.h

temporal_id

显式设置要编码的当前帧的时间 id。

2

两个时间层。0-1...

3

三个时间层。0-2-1-2...;具有单一参考系。

4

与选项“3”相同,除了时间周期内的两个时间第2层帧之间存在依赖性。

VP9-specific options
lossless

启用无损模式。

tile-columns

设置要使用的图块列数。请注意,这给出为 log2(tile_columns)。例如,通过设置来请求 8 个平铺列平铺列选项3。

tile-rows

设置要使用的图块行数。请注意,这给出为log2(tile_rows)。例如,通过设置来请求 4 个平铺行平铺行 选项2。

frame-parallel

启用帧并行解码功能。

aq-mode

设置自适应量化模式(0:关闭(默认)、1:方差、2:复杂度、3:循环刷新、4:equator360)。

colorspace color-space

设置输入色彩空间。VP9 比特流支持发送以下颜色空间信号:

rgbsRGB
bt709bt709
unspecifiedunknown
bt470bgbt601
smpte170msmpte170
smpte240msmpte240
bt2020_nclbt2020
row-mt boolean

启用基于行的多线程。

tune-content

设置内容类型:默认 (0)、屏幕 (1)、电影 (2)。

corpus-complexity

Corpus VBR 模式是标准 VBR 的一种变体,其中复杂性分布中点被传入,而不是针对特定剪辑或块进行计算。

有效范围为 [0, 10000]。0(默认)使用标准 VBR。

enable-tpl boolean

启用时间依赖模型。

ref-frame-config

使用每帧元数据,将结构成员设置vpx_svc_ref_frame_config_tvpx/vp8cx.h精细控制引用方案和帧缓冲区管理。
使用 : 分隔的键=值对列表。例如,

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

最后帧缓冲区索引

rfc_gld_fb_idx

黄金帧缓冲区索引

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 libwebp

libwebp WebP 图像编码器包装器

libwebp 是 Google 的 WebP 图像官方编码器。它可以以有损或无损模式进行编码。有损图像本质上是 VP8 帧的包装。无损图像是 Google 开发的独立编解码器。

9.14.1 像素格式

目前,由于格式和 libwebp 的限制,libwebp 仅支持有损 YUV420 和无损 RGB。任一模式都支持 Alpha。由于 API 的限制,如果有损编码时传入 RGB,或者无损编码时传入 YUV,则将使用 libwebp 中的函数自动转换像素格式。这并不理想,这样做只是为了方便。

9.14.2 选项

-lossless boolean

启用/禁用无损模式的使用。默认值为 0。

-compression_level integer

对于有损来说,这是质量/速度的权衡。对于给定大小,较高的值可提供更好的质量,但代价是增加编码时间。对于无损,这是大小/速度的权衡。值越高,尺寸越小,但代价是编码时间增加。更具体地说,它控制使用的额外算法和压缩工具的数量,并改变这些工具的组合。这映射到libwebp 中的方法选项。有效范围为 0 到 6。默认值为 4。

-quality float

对于有损编码,这控制图像质量。对于无损编码,这控制了压缩所花费的精力和时间。范围是 0 到 100。默认值为 75。

-preset type

配置预设。这会根据图像的一般类型进行一些自动设置。

none

不要使用预设。

default

使用默认编码器。

picture

数码照片,如肖像、内景

photo

户外拍摄,自然光

drawing

手绘或线条画,具有高对比度细节

icon

小尺寸彩色图像

text

类似文本的

9.15 libx264, libx264rgb

x264 H.264/MPEG-4 AVC 编码器包装器。

该编码器需要在配置期间存在 libx264 标头和库。您需要使用 显式配置构建 --enable-libx264

libx264 支持大量功能,包括 8x8 和 4x4 自适应空间变换、自适应 B 帧放置、CAVLC/CABAC 熵编码、隔行扫描 (MBAFF)、无损模式、细节保留的 psy 优化(自适应量化、psy-RD、psy -格子)。

许多 libx264 编码器选项映射到 FFmpeg 全局编解码器选项,而独特的编码器选项通过私有选项提供。另外还有x264选项x264-参数 private 选项允许传递 libx264x264_param_parse函数接受的 key=value 元组列表。

x264 项目网站位于 http://www.videolan.org/developers/x264.html

libx264rgb 编码器与 libx264 相同,只是它接受打包 RGB 像素格式作为输入而不是 YUV。

9.15.1 支持的像素格式

x264 支持 8 至 10 位颜色空间。确切的位深度由 x264 的配置时间控制。

9.15.2 选项

libx264 包装器支持以下选项。括号中列出了等效选项 x264或值,以便于迁移。

为了减少文档的重复,这里仅记录私有选项和其他一些需要特别注意的选项。有关未记录的通用选项的文档,请参阅 “编解码器选项”一章

要获取有关 libx264 选项的更准确和更广泛的文档,请调用该命令x264 --fullhelp或查阅 libx264 文档。

b (bitrate)

设置比特率(以位/秒为单位)。请注意 FFmpeg 的选项以位/秒表示,而x264s比特率单位为千比特/秒。

bf (bframes)
g (keyint)
qmin (qpmin)

最小量化器比例。

qmax (qpmax)

最大量化器比例。

qdiff (qpstep)

量化器尺度之间的最大差异。

qblur (qblur)

量化曲线模糊

qcomp (qcomp)

量化曲线压缩因子

refs (ref)

每个 P 帧可以使用的参考帧数。范围是0-16

level (level)

如果值为正则设置x264_param_t.i_level_idc该值,否则忽略。

该值可以使用AVCodecContextAPI 设置(例如,通过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 的菱形搜索(最快)。'出口处' 是 ' 的别名直径'。

hex (hex)

半径为 2 的六边形搜索。

umh (umh)

不均匀的多六边形搜索。

esa (esa)

详尽的搜索。

tesa (tesa)

Hadamard 穷举搜索(最慢)。

forced-idr

通常,当强制I帧类型时,编码器可以选择任何类型的I帧。此选项强制它选择 IDR 帧。

subq (subme)

亚像素运动估计方法。

b_strategy (b-adapt)

自适应 B 帧放置决策算法。仅在第一次通过时使用。

keyint_min (min-keyint)

最小 GOP 大小。

coder

设置熵编码器。可能的值:

ac

启用 CABAC。

vlc

启用 CAVLC 并禁用 CABAC。x264它产生与s相同的效果 --无卡巴克选项。

cmp

设置全像素运动估计比较算法。可能的值:

chroma

在运动估计中启用色度。

sad

忽略运动估计中的色度。x264它产生与s相同的效果 --无色度我选项。

threads (threads)

编码线程数。

thread_type

设置多线程技术。可能的值:

slice

基于切片的多线程。x264它产生与s相同的效果 --切片线程选项。

frame

基于帧的多线程。

flags

设置编码标志。它可用于禁用封闭 GOP 并通过将其设置为 来启用开放 GOP -cgop。结果类似于 的x264行为--open-gop选项。

rc_init_occupancy (vbv-init)
preset (preset)

设置编码预设。

tune (tune)

设置编码参数的调整。

profile (profile)

设置个人资料限制。

fastfirstpass

编码第一遍时启用快速设置,设置为1时。设置为0时,与 的效果x264相同 --慢速优先选项。

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

x264设置为1时使用心理视觉优化。设置为0时与 的效果相同--无精神选项。

psy-rd (psy-rd)

设置心理视觉优化的强度,采用 psy-rd : psy-trellis格式。

rc-lookahead (rc-lookahead)

设置帧数以预测帧类型和速率控制。

weightb

设置为1时启用B帧的加权预测。设置为0时,与 的效果x264相同--无权重b选项。

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=1force-cfr=1”的简写。

b-bias (b-bias)

设置对 B 帧使用频率的影响。

b-pyramid (b-pyramid)

设置保留某些 B 帧作为参考的方法。可能的值:

none (none)

残疾人。

strict (strict)

严格的等级金字塔。

normal (normal)

非严格(不兼容蓝光)。

mixed-refs

启用每个分区使用一个引用,而不是设置为 1 时每个宏块使用一个引用。设置为 0 时,与 的效果x264相同--无混合参考选项。

8x8dct

设置为 1 时启用自适应空间变换(高调 8x8 变换)。设置为 0 时与 的效果 x264相同--no-8x8dct选项。

fast-pskip

设置为 1 时,启用 P 帧的早期 SKIP 检测。设置为 0 时,与 的效果x264相同 --无快速 pskip选项。

aud (aud)

设置为 1 时启用访问单元分隔符。

mbtree

设置为 1 时启用使用宏块树速率控制。设置为 0 时与 的效果x264相同 --无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 负载大小(附注) 被指定,即被使用。

stats (stats)

设置多通道统计数据的文件名。

nal-hrd (nal-hrd)

设置信号 HRD 信息(需要vbv 缓冲区大小要设置)。可能的值:

none (none)

禁用 HRD 信息信号。

vbr (vbr)

可变比特率。

cbr (cbr)

恒定比特率(MP4 容器中不允许)。

x264opts (N.A.)

设置任何 x264 选项,请参阅x264 --fullhelp参考资料 的列表。

参数是由“:”分隔的=对的列表。在使用“:”作为分隔符本身的过滤器psy-rd选项中,请改用“,”。他们很久以前也接受它,但由于某种原因,这没有记录下来。

例如,使用以下命令指定 libx264 编码选项ffmpeg

ffmpeg -i foo.mpg -c:v libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv
a53cc boolean

将隐藏式字幕(必须是 ATSC 兼容格式)导入到输出中。只有 mpeg2 和 h264 解码器提供这些。默认值为 1(打开)。

udu_sei boolean

将未注册 SEI 的用户数据(如果可用)导入到输出中。默认值为 0(关闭)。

mb_info boolean

通过 AVFrameSideData 设置 mb_info 数据,仅在从 API 使用时有用。默认值为 0(关闭)。

x264-params (N.A.)

使用 :-分隔的 key=value 参数列表覆盖 x264 配置。

该选项的功能与x264选项,但为了与 Libav 分支兼容而重复。

例如,使用以下命令指定 libx264 编码选项ffmpeg

ffmpeg -i INPUT -c:v libx264 -x264-params 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 OUTPUT

提供了常见用途的编码 ffpresets,以便它们可以与通用预设系统一起使用(例如,传递选项)。

9.16 libx265

x265 H.265/HEVC 编码器包装器。

该编码器需要在配置期间存在 libx265 标头和库。您需要显式配置构建 --启用-libx265

9.16.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

使用以“:”分隔的=对列表设置 x265 选项。请参阅x265 --help参考资料 中的选项列表。

例如,指定 libx265 编码选项-x265-参数:

ffmpeg -i input -c:v libx265 -x265-params crf=26:psy-rd=1 output.mp4

9.17 libxavs2

xavs2 AVS2-P2/IEEE1857.4 编码器包装器。

该编码器需要在配置期间存在 libxavs2 标头和库。您需要显式配置构建 --启用-libxavs2

使用以下标准 libavcodec 选项:

  • /比特率
  • G/组大小
  • 男朋友/最大b帧数

编码器还有自己的特定选项:

9.17.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

使用以“:”分隔的 =对列表设置 xavs2 选项。

例如,指定 libxavs2 编码选项-xavs2-参数:

ffmpeg -i input -c:v libxavs2 -xavs2-params RdoqLevel=0 output.avs2

9.18 libxvid

Xvid MPEG-4 第 2 部分编码器包装器。

该编码器需要在配置期间存在 libxvidcore 标头和库。您需要使用 显式配置构建 --enable-libxvid --enable-gpl

本机mpeg4编码器支持 MPEG-4 Part 2 格式,因此用户无需此库即可编码为该格式。

9.18.1 选项

libxvid 包装器支持以下选项。以下一些选项已列出但未记录,并且对应于共享编解码器选项。请参阅“编解码器选项”一章以获取其文档。未列出的其他共享选项对 libxvid 编码器没有影响。

b
g
qmin
qmax
mpeg_quant
threads
bf
b_qfactor
b_qoffset
flags

设置特定的编码标志。可能的值:

mv4

按宏块使用四个运动矢量。

aic

启用高质量 AC 预测。

gray

仅编码灰度。

gmc

启用全局运动补偿 (GMC)。

qpel

启用四分之一像素运动补偿。

cgop

启用封闭式 GOP。

global_header

将全局标题放置在额外数据中,而不是每个关键帧中。

trellis
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(禁用)。

当与亮度_aq,所得质量不会优于单独指定的两个质量中的任何一个。换句话说,产生的质量将是两种效果中最差的一种。

ssim

设置结构相似度(SSIM)显示方法。可能的值:

off

禁用显示 SSIM 信息。

avg

编码结束时将平均 SSIM 输出到标准输出。显示平均 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.19 MediaFoundation

这为 MediaFoundation 框架中的编码器(音频和视频)提供了包装器。它可以访问软件和硬件编码器。视频编码器可以采用 nv12 或 yuv420p 形式输入(有些编码器支持两者,有些编码器仅支持其中之一 - 实际上,nv12 是更安全的选择,尤其是在硬件编码器中)。

9.20 Microsoft RLE

Microsoft RLE 又名 MSRLE 编码器。仅支持 8 位调色板模式。与Windows 3.1和Windows 95兼容。

9.20.1 选项

g integer

关键帧间隔。至少每-g帧插入一个关键帧,有时甚至更快。

9.21 mpeg2

MPEG-2 视频编码器。

9.21.1 选项

profile

选择要编码的 mpeg2 配置文件:

422
high
ss

空间可扩展

snr

信噪比可扩展

main
simple
level

选择要编码的 mpeg2 级别:

high
high1440
main
low
seq_disp_ext integer

指定编码器是否应将sequence_display_extension写入输出。

-1
auto

通过检查要写入的数据是否与默认值或未指定的值不同来自动决定是否写入(这是默认值)。

0
never

永远不要写它。

1
always

总是写它。

video_format integer

指定写入序列显示扩展的 video_format ,指示视频图片的来源。默认为 '未指定', 可 '成分','朋友','NTSC','塞卡姆' 或者 '苹果'。为了获得最大的兼容性,请使用 '成分'。

a53cc boolean

将隐藏式字幕(必须是 ATSC 兼容格式)导入到输出中。默认值为 1(打开)。

9.22 png

PNG 图像编码器。

9.22.1 私有选项

dpi integer

设置像素的物理密度,以每英寸点数为单位,默认未设置

dpm integer

设置像素的物理密度,以每米点数为单位,默认未设置

9.23 ProRes

Apple ProRes 编码器。

FFmpeg 包含 2 个 ProRes 编码器,即 prores-aw 和 prores-ks 编码器。可以通过选项选择所使用的编码器-vcodec

9.23.1 prores-ks 的私有选项

profile integer

选择要编码的 ProRes 配置文件

proxy
lt
standard
hq
4444
4444xq
quant_mat integer

选择量化矩阵。

auto
default
proxy
lt
standard
hq

如果设置为auto,将选择与配置文件匹配的矩阵。如果未设置,将选择 提供最高质量的矩阵(默认) 。

bits_per_mb integer

为编码一个宏块分配多少位。不同的配置文件每个宏块使用 200 到 2400 位,最大值为 8000。

mbs_per_slice integer

每个切片中宏块的数量(1-8);默认值 (8) 几乎适用于所有情况。

vendor string

覆盖 4 字节供应商 ID。像apl0这样的自定义供应商 ID会声称该流是由 Apple 编码器生成的。

alpha_bits integer

指定 alpha 分量的位数。可能的值为0、816。使用0禁用 alpha 平面编码。

9.23.2 速度考虑

在默认操作模式下,编码器必须遵守帧约束(即不生成尺寸大于请求的帧),同时仍然使输出图像尽可能好。包含大量小细节的帧更难压缩,编码器将花费更多时间为每个切片搜索合适的量化器。

设置更高每MB位数限制会提高速度。

为了获得最快的编码速度,请设置质量尺度参数(4为推荐值)并且不设置大小限制。

9.24 QSV Encoders

英特尔 QuickSync 视频编码器系列(MPEG-2、H.264、HEVC、JPEG/MJPEG、VP9、AV1)

9.24.1 码率控制方法

码率控制方法选择如下:

  • 什么时候全局质量指定后,将使用基于质量的模式。具体来说,这意味着
    • - CQP - 恒定量化器比例,当质量尺度编解码器标志也被设置(-qscaleffmpeg 选项)。
    • - LA_ICQ - 具有前瞻性的智能恒定质量,当 展望选项也已设置。
    • - ICQ – 智能恒定质量否则。对于 ICQ 模式,全局质量范围为 1 到 51,其中 1 为最佳质量。
  • 否则,使用基于比特率的模式。对于所有这些,您应该至少指定所需的平均比特率选项。
    • - LA - 带前瞻的 VBR,当展望选项已指定。
    • - VCM - 视频会议模式,当氯乙烯选项已设置。
    • - CBR - 恒定比特率,当最大速率被指定并等于平均比特率。
    • - VBR - 可变比特率,当最大速率已指定,但高于平均比特率。
    • - AVBR - 平均VBR模式,当最大速率未指定,两者 avbr_准确度avbr_收敛被设置为非零。此模式适用于 Windows 上的 H264 和 HEVC。

请注意,根据您的系统,编码器可能会选择与您指定的模式不同的模式。将详细级别设置为详细或更高,以查看 QSV 运行时使用的实际设置。

9.24.2 全局选项->MSDK 选项

其他 libavcodec 全局选项映射到 MSDK 选项,如下所示:

  • g/gop_size->图像大小
  • bf/最大b帧数+1 ->GopRefDist
  • rc_init_ocpancy/rc_initial_buffer_ocpancy-> 初始延迟(KB)
  • 切片->切片数量
  • 参考文献->参考帧数
  • b_strategy/b_frame_strategy->B参考类型
  • cgop/CLOSED_GOP编解码器标志 ->选区选择标志
  • 对于CQP模式,i_qfactor/i_qoffsetb_qfactor/b_qoffset分别设置QPPQPI以及QPPQPB之间的差值。
  • 设置编码员vlc的选项将使 H.264 编码器使用 CAVLC 而不是 CABAC。

9.24.3 常用选项

所有 qsv 编码器都使用以下选项。

async_depth

指定应用程序显式同步结果之前执行的异步操作数。如果为零,则未指定该值。

preset

此选项列出了从非常快(最佳速度)到非常慢(最佳质量)的一系列选择。

veryfast
faster
fast
medium
slow
slower
veryslow
forced_idr

强制 I 帧作为 IDR 帧。

low_power

对于编码器,将此标志设置为 ON 以降低功耗和 GPU 使用率。

9.24.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 配置。

9.24.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 帧引起的编码比特流大小产生重大影响。SDK 编码器通过使用帧内 MB 在刷新周期中对每帧的一部分进行编码来实现此目的。none表示不刷新。Vertical表示垂直刷新,以 MB 为单位。Horizo​​ntal表示水平刷新,以 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] 范围内的有符号值,并且此范围为 [-63, 63](对于 10 位深度)或 [-75, 75](对于 12 位深度)分别。

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_accuracyavbr_convergence用于平均可变比特率控制 (AVBR) 算法。该算法侧重于整体编码质量,同时在avbr_Convergence周期后满足精度范围avbr_accuracy内指定的比特率target_bitrate。此方法不遵循 HRD,并且即时比特率不会受到限制或填充。

skip_frame

使用每帧元数据“qsv_skip_frame”在编码时跳过帧。此选项定义此元数据的用途。

no_skip

跳帧被禁用。

insert_dummy

编码器插入比特流帧,其中所有宏块都被编码为跳过。

insert_nothing

与 insert_dummy 类似,但编码器不向比特流中插入任何内容。跳帧仍然在brc中使用。例如,gop仍然包含跳帧,并且跳帧之后的帧尺寸会更大。

brc_only

Skip_frame元数据指示当前帧之前丢失的帧的数量。

9.24.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 才能支持高层)。该选项仅在指定 level 选项时生效。

main
high
gpb

1:GPB(广义P/B框架)

0:常规P帧。

tile_cols

平铺编码的列数。

tile_rows

平铺编码的行数。

aud

插入访问单元分隔符 NAL。

pic_timing_sei

使用 pic_struct_syntax 元素插入图片时序 SEI。

transform_skip

打开此选项以启用 Transformskip。它在等于或更新于 ICL 的平台上受支持。

int_ref_type

指定帧内刷新类型。帧内刷新的主要目标是提高错误恢复能力,而不会对 I 帧引起的编码比特流大小产生重大影响。SDK 编码器通过使用帧内 MB 在刷新周期中对每帧的一部分进行编码来实现此目的。none表示不刷新。Vertical表示垂直刷新,以 MB 为单位。Horizo​​ntal表示水平刷新,以 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] 范围内的有符号值,并且此范围为 [-63, 63](对于 10 位深度)或 [-75, 75](对于 12 位深度)分别。

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_accuracyavbr_convergence用于平均可变比特率控制 (AVBR) 算法。该算法侧重于整体编码质量,同时在avbr_Convergence周期后满足精度范围avbr_accuracy内指定的比特率target_bitrate。此方法不遵循 HRD,并且即时比特率不会受到限制或填充。

skip_frame

使用每帧元数据“qsv_skip_frame”在编码时跳过帧。此选项定义此元数据的用途。

no_skip

跳帧被禁用。

insert_dummy

编码器插入比特流帧,其中所有宏块都被编码为跳过。

insert_nothing

与 insert_dummy 类似,但编码器不向比特流中插入任何内容。跳帧仍然在brc中使用。例如,gop仍然包含跳帧,并且跳帧之后的帧尺寸会更大。

brc_only

Skip_frame元数据指示当前帧之前丢失的帧的数量。

9.24.7 MPEG2 选项

这些选项由 mpeg2_qsv 使用

profile
unknown
simple
main
high

9.24.8 VP9 选项

这些选项由 vp9_qsv 使用

profile
unknown
profile0
profile1
profile2
profile3
tile_cols

平铺编码的列数(需要 libmfx >= 1.29)。

tile_rows

平铺编码的行数(需要 libmfx >= 1.29)。

9.24.9 AV1 选项

这些选项由 av1_qsv 使用(需要 libvpl)。

profile
unknown
main
tile_cols

平铺编码的列数。

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

设置每个帧允许的最大大小(以字节为单位)。如果帧大小超过限制,编码器将调整 QP 值来控制帧大小。在CQP码率控制模式下无效。

9.25 snow

9.25.1 选项

iterative_dia_size

用于迭代运动估计的直径大小

9.26 VAAPI encoders

可通过 VAAPI 访问的硬件编码器的包装器。

这些编码器仅接受 VAAPI 硬件表面中的输入。如果您在软件框架中有输入,请使用上传过滤器将它们上传到 GPU。

使用以下标准 libavcodec 选项:

  • G/组大小
  • 男朋友/最大b帧数
  • 轮廓

    如果未设置,这将根据输入帧的格式和驱动程序支持的配置文件自动确定。

  • 等级
  • /比特率
  • 最大速率/最大速率
  • 缓冲区大小/rc_buffer_size
  • rc_init_占用/rc_initial_buffer_占用
  • 压缩级别

    速度/质量权衡:值越高,速度越快/质量越差。

  • q/全局质量

    尺寸/质量权衡:值越高,质量越小/质量越差。

  • 最小q值
  • 最大q值
  • i_q因子/i_量化因子
  • i_qoffset/i_quant_偏移量
  • b_q因子/b_量化因子
  • b_qoffset/b_quant_offset
  • 切片

所有编码器都支持以下选项:

low_power

某些驱动程序/平台为某些编解码器提供第二个编码器,旨在使用比默认编码器更少的功率;设置此选项将尝试使用该编码器。请注意,它可能支持减少的功能集,因此某些其他选项在此模式下可能不可用。

idr_interval

设置开放 GOP 模式下完全刷新 (IDR) 帧之间的正常帧内帧数。帧内帧仍然是 IRAP,但不包括全局标头,并且可能具有不可解码的前导图片。

b_depth

设置 B 帧参考深度。当设置为 1(默认值)时,所有 B 帧将仅引用 P 或 I 帧。当设置为更大的值时,将出现多层 B 帧,每层中的帧仅引用更高层中的帧。

async_depth

最大处理并行度。增加此值可提高单通道性能。如果驱动程序未实现 vaSyncBuffer 函数,则此选项不起作用。如果使用大量async_depth,请确保分配足够的hw_frames。

max_frame_size

设置每个帧允许的最大大小(以字节为单位)。如果帧大小超过限制,编码器将调整 QP 值来控制帧大小。在CQP码率控制模式下无效。

rc_mode

设置要使用的速率控制模式。给定的驱动程序可能仅支持模式的子集。

可能的模式:

auto

根据驱动程序支持和其他选项自动选择模式。这是默认设置。

CQP

质量稳定。

CBR

恒定比特率。

VBR

可变比特率。

ICQ

智能恒品质。

QVBR

质量定义的可变比特率。

AVBR

平均可变比特率。

每个编码器还有其自己的特定选项:

av1_vaapi

轮廓设置seq_profile的值。 设置seq_tier的值。 等级设置seq_level_idx的值。

tiles

设置用于对输入视频进行编码的图块数量,如列 x 行。(默认为自动,这意味着使用最小的平铺列/行数)。

tile_groups

设置图块组数。所有图块将尽可能均匀地分布到每个图块组中。(默认值为 1)。

h264_vaapi

轮廓设置profile_idcconstraint_set*_flag的值。 等级设置level_idc的值。

coder

设置熵编码器(默认为cabac)。可能的值:

ac
cabac

使用 CABAC。

vlc
cavlc

使用 CAVLC。

aud

在流中包含访问单元分隔符(默认情况下不包含)。

sei

设置要包含的 SEI 消息类型。以下值的某种组合:

identifier

包含包含有关编码器信息的 user_data_unregistered消息。

timing

包括图片定时参数(buffering_periodpic_timing消息)。

recovery_point

在适当的情况下包括恢复点(recovery_point消息)。

hevc_vaapi

轮廓等级分别设置general_profile_idcgeneral_level_idc的值 。

aud

在流中包含访问单元分隔符(默认情况下不包含)。

tier

设置General_tier_flag。如果未明确指定,这可能会影响为流选择的级别。

sei

设置要包含的 SEI 消息类型。以下值的某种组合:

hdr

如果输入帧有 HDR 元数据(mastering_display_colour_volumecontent_light_level 消息),则包括 HDR 元数据。

tiles

设置用于对输入视频进行编码的图块数量,如列 x 行。数字越大,编码和解码的并行性就越高,但可能会降低编码效率。

mjpeg_vaapi

仅支持基线 DCT 编码。编码器始终使用标准量化和霍夫曼表 -全局质量缩放标准量化表(范围 1-100)。

对于 YUV,支持 4:2:0、4:2:2 和 4:4:4 子采样模式。还支持 RGB,并将创建 RGB JPEG。

jfif

在每个帧中包含 JFIF 标头(默认情况下不包含)。

huffman

包括标准哈夫曼表(默认情况下打开)。关闭此功能将在每个输出帧中节省几百个字节,但可能会失去与某些不能完全处理 MJPEG 的 JPEG 解码器的兼容性。

mpeg2_vaapi

轮廓等级设置profile_and_level_inspiration的值。

vp8_vaapi

不支持 B 帧。

全局质量设置用于非关键帧的 q_idx (范围 0-127)。

loop_filter_level
loop_filter_sharpness

手动设置环路滤波器参数。

vp9_vaapi

全局质量设置用于 P 帧的 q_idx (范围 0-255)。

loop_filter_level
loop_filter_sharpness

手动设置环路滤波器参数。

支持 B 帧,但输出流始终按编码顺序而不是显示顺序。如果启用 B 帧,则可能需要使用vp9_raw_重新排序 比特流过滤器修改输出流以按正确的顺序显示帧。

只生产普通框架 -vp9_超帧可能需要比特流过滤器来产生可用于所有解码器的流。

9.27 vbn

Vizrt 二进制图像编码器。

广播供应商 Vizrt 使用此格式进行快速纹理流。不支持该格式的高级功能,例如纹理数据的 LZW 压缩或 mipmap 的生成。

9.27.1 选项

format string

设置 VBN 文件使用的纹理压缩。可以是dxt1dxt5raw。默认为dxt5

9.28 vc2

SMPTE VC-2(以前称为 BBC Dirac Pro)。该编解码器主要针对专业广播,但由于它支持 8 位(有限范围或全范围)、10 或 12 位的 yuv420、yuv422 和 yuv444,因此它适用于需要低开销和低压缩的其他任务(例如屏幕录制) )。

9.28.1 选项

b

设置目标视频比特率。通常约为未压缩视频比特率的 1:6(例如,对于 1920x1080 50fps yuv422p10,约为 400Mbps)。较高的值(接近未压缩的比特率)会打开无损压缩模式。

field_order

当隔行扫描输入设置(例如,tt - 顶场优先)时启用场编码。应增加隔行扫描内容的压缩,因为它会分割字段并分别对每个字段进行编码。

wavelet_depth

设置要应用的小波变换总量,介于 1 和 5 之间(默认)。较低的值会降低压缩率和质量。能力较差的解码器可能无法处理以下值小波深度超过3.

wavelet_type

设置变换类型。目前仅实现了5_3 (LeGall) 和9_7 (Deslauriers-Dubuc),其中 9_7 具有更好的压缩效果,因此是默认值。

slice_width
slice_height

设置每个切片的切片大小。值越大,压缩效果越好。为了与其他更有限的解码器兼容使用切片宽度32 和切片高度共 8 个。

tolerance

设置速率控制系统的下冲容差(以百分比为单位)。这是为了防止运行昂贵的搜索。

qm

设置默认情况下或在以下情况下使用的量化矩阵预设小波深度 设置为 5

  • -默认 使用规范中的默认量化矩阵,并使用第五级的值进行扩展。这在保留细节和忽略伪像之间提供了良好的平衡。
  • - flat 使用完全归零的量化矩阵。这会增加 PSNR,但可能会降低感知。用于虚假基准测试。
  • -颜色 减少细节,但尝试以极低的比特率保留颜色。

10 个字幕编码器

10.1 dvdsub

此编解码器对 DVD 中使用的位图字幕格式进行编码。通常它们存储在 VOBSUB 文件对 (*.idx + *.sub) 中,也可以在 Matroska 文件中使用。

10.1.1 选项

palette

指定位图使用的全局调色板。

该选项的格式是一个字符串,包含 16 个 24 位十六进制数字(不带 0x 前缀),以逗号分隔,例如0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b

even_rows_fix

当设置为 1 时,启用一种解决方法,使所有字幕中的像素行数均匀。这解决了一些玩家在数字为奇数时切断底行的问题。如果需要,解决方法只是添加一个完全透明的行。开销很低,通常每个字幕平均一个字节。

默认情况下,此解决方法处于禁用状态。

11 另请参阅

ffmpegffplayffprobelibavcodec

12 位作者

FFmpeg 开发人员。

git log有关作者身份的详细信息,请参阅项目的 Git 历史记录 (https://git.ffmpeg.org/ffmpeg),例如通过在 FFmpeg 源目录中键入命令 ,或浏览https://git 的在线存储库。 ffmpeg.org/ffmpeg

文件中列出了特定组件的维护者 维护者在源代码树中。

本文档于2023 年 11 月 17 日使用makeinfo 生成。

由telepoint.bg提供的托管