1 描述
本文档介绍了 libavcodec 库提供的比特流过滤器。
比特流过滤器对编码的流数据进行操作,并执行比特流级别修改而不执行解码。
2 比特流过滤器
当您配置 FFmpeg 版本时,默认情况下会启用所有支持的比特流过滤器。您可以使用配置选项 --list-bsfs 列出所有可用的过滤器。
您可以使用配置选项 --disable-bsfs 禁用所有比特流过滤器,并使用选项 --enable-bsf=BSF 有选择地启用任何比特流过滤器,或者您可以使用选项 --disable-bsf=BSF 禁用特定的比特流过滤器。
ff* 工具的 -bsfs 选项将显示构建中包含的所有受支持的比特流过滤器列表。
ff* 工具对每个流应用一个 -bsf 选项,采用逗号分隔的过滤器列表,其参数跟在过滤器名称后面的“=”后面。
ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT
以下是当前可用的比特流过滤器及其参数(如果有)的描述。
2.1 aac_adtstoasc
将 MPEG-2/4 AAC ADTS 转换为 MPEG-4 音频特定配置比特流。
此过滤器从 MPEG-2/4 ADTS 标头创建 MPEG-4 AudioSpecificConfig 并删除 ADTS 标头。
例如,将 AAC 流从原始 ADTS AAC 或 MPEG-TS 容器复制到 MP4A-LATM、FLV 文件或 MOV/MP4 文件以及相关格式(如 3GP 或 M4A)时,需要此过滤器。请注意,它会自动插入 MP4A-LATM 和 MOV/MP4 及相关格式。
2.2 av1_metadata
修改嵌入在 AV1 流中的元数据。
- td
在流的所有时间单元中插入或删除时间分隔符 OBU。
- ‘insert’
在每个尚未有 TD 的 TU 开头插入一个 TD。
- ‘remove’
从每个有 TD 的 TU 开头删除 TD。
- color_primaries
- transfer_characteristics
- matrix_coefficients
设置流中的颜色描述字段(参见 AV1 第 6.4.2 节)。
- color_range
设置流中的颜色范围(请参阅 AV1 第 6.4.2 节;请注意,对于使用 BT.709 原色、sRGB 传输特性和身份 (RGB) 矩阵系数的流,无法设置此项)。
- ‘tv’
范围有限。
- ‘pc’
全范围。
- chroma_sample_position
设置流中的色度样本位置(请参阅 AV1 第 6.4.2 节)。只能为 4:2:0 流设置此项。
- ‘vertical’
左侧位置(与 MPEG-2 和 H.264 中的默认值匹配)。
- ‘colocated’
左上角位置。
- tick_rate
在序列头中的时间信息中设置刻度率(time_scale / num_units_in_display_tick)。
- num_ticks_per_picture
设置每张图片中的刻度数,以指示流具有固定的帧速率。如果未设置 tick_rate,则忽略。
- delete_padding
删除填充 OBU。
2.3 chomp
删除数据包末尾的零填充。
2.4 dca_core
从 DCA/DTS 流中提取核心,删除 DTS-HD 等扩展。
2.5 dump_extra
将额外数据添加到已过滤数据包的开头,除非所述数据包已经以要添加的额外数据开头。
- freq
附加参数指定应过滤哪些数据包。它接受以下值:
- ‘k’
- ‘keyframe’
向所有关键数据包添加额外数据
- ‘e’
- ‘all’
向所有数据包添加额外数据
如果未指定,则假定为‘k’。
例如,以下 ffmpeg 命令强制在 libx264 编码器生成的 H.264 数据包中使用全局标头(从而禁用单个数据包标头),但通过将存储在 extradata 中的标头添加到关键数据包来更正它们:
ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
2.6 dv_error_marker
DV 中标记为损坏的块将被指定颜色的块替换。
- color
用于替换损坏块的颜色
- sta
16 位掩码,指定 16 个可能的错误状态值中的哪一个将被彩色块替换。0xFFFE 是默认值,它将替换所有非 0 错误状态值。
- ‘ok’
无错误,无隐瞒
- ‘err’
错误,无隐瞒
- ‘res’
保留
- ‘notok’
错误或隐瞒
- ‘notres’
不保留
- ‘Aa, Ba, Ca, Ab, Bb, Cb, A, B, C, a, b, erri, erru’
具体错误状态码
见http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf 的第 44-46 页或第 5.5 节
2.7 eac3_core
从 E-AC-3 流中提取核心,删除额外通道。
2.8 extract_extradata
提取带内额外数据。
某些编解码器允许长期标头(例如 MPEG-2 序列标头或 H.264/HEVC (VPS/)SPS/PPS)以“带内”(即作为包含编码帧的比特流的一部分)或“带外”(例如在容器级别)传输。后一种形式在 FFmpeg 术语中称为“额外数据”。
此比特流过滤器检测带内标头并将其作为额外数据提供。
- remove
启用此选项后,长期标头将在提取后从比特流中删除。
2.9 filter_units
从流中删除类型在给定集合中或不在给定集合中的单元。
- pass_types
要通过的单位类型列表或单位类型范围,同时删除所有其他单位类型。这指定为以“|”分隔的单位类型值列表或带有“-”的值范围。
- remove_types
与 pass_types 相同,但给定集合中的单位被删除,而所有其他单位都被通过。
pass_types 和 remove_types 使用的类型对应于 H.264、HEVC 和 H.266 中的 NAL 单元类型 (nal_unit_type)(参见 H.264 和 HEVC 规范中的表 7-1 或 H.266 规范中的表 5)、JPEG 的标记值(不带 0xFF 前缀)和 MPEG-2 的不带起始代码前缀的起始代码(即 0x000001 后面的字节)。对于 VP8 和 VP9,每个单元的类型为零。
此转换不会改变额外数据,但请注意,如果流包含内联参数集,则如果删除它们,输出可能无法使用。
例如,要从 H.264 流中删除所有非 VCL NAL 单元:
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT
要从 H.265 流中删除所有 AUD、SEI 和填充符:
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT
要从 MPEG-2 流中删除所有用户数据(包括隐藏式字幕):
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=178' OUTPUT
要从 H264 流中删除所有 SEI(包括隐藏式字幕):
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=6' OUTPUT
要从 HEVC 流中删除所有前缀和后缀 SEI(包括隐藏式字幕和动态 HDR):
ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=39|40' OUTPUT
2.10 hapqa_extract
提取 HAPQA 文件的 Rgb 或 Alpha 部分(无需重新压缩),以创建 HAPQ 或 HAPAlphaOnly 文件。
- texture
指定要保留的纹理。
- color
- alpha
将 HAPQA 转换为 HAPQ
ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov
将 HAPQA 转换为 HAPAlphaOnly
ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov
2.11 h264_metadata
修改嵌入在 H.264 流中的元数据。
- aud
在流的所有访问单元中插入或删除 AUD NAL 单元。
- ‘pass’
- ‘insert’
- ‘remove’
默认为 pass。
- sample_aspect_ratio
在 VUI 参数中设置流的样本纵横比。请参阅 H.264 表 E-1。
- overscan_appropriate_flag
设置流是否适合使用过扫描显示(请参阅 H.264 部分 E.2.1)。
- video_format
- video_full_range_flag
设置流中的视频格式(参见 H.264 第 E.2.1 节和表 E-2)。
- colour_primaries
- transfer_characteristics
- matrix_coefficients
设置流中的颜色描述(参见 H.264 第 E.2.1 节和表 E-3、E-4 和 E-5)。
- chroma_sample_loc_type
设置流中的色度样本位置(参见 H.264 第 E.2.1 节和图 E-1)。
- tick_rate
在 VUI 参数中设置刻度率 (time_scale / num_units_in_tick)。这是流中可表示的最小时间单位,在许多情况下表示流的场速率(帧速率的两倍)。
- fixed_frame_rate_flag
设置流是否具有固定帧速率 - 通常这表示帧速率恰好是刻度速率的一半,但确切含义取决于隔行扫描和图片结构(参见 H.264 第 E.2.1 节和表 E-6)。
- zero_new_constraint_set_flags
将 SPS 中的约束集 4 标志和约束集 5 标志清零。这些位在 H.264 规范的先前版本中保留,因此某些硬件解码器要求这些位为零。将其清零的结果仍然是有效的比特流。
- crop_left
- crop_right
- crop_top
- crop_bottom
设置 SPS 中的帧裁剪偏移量。如果流已被裁剪,这些值将替换当前值。
这些字段以像素为单位设置。请注意,如果色度被二次采样或流被隔行扫描,则某些大小可能无法表示(请参阅 H.264 第 7.4.2.1.1 节)。
- sei_user_data
插入字符串作为 SEI 未注册用户数据。参数必须采用 UUID+string 的形式,其中 UUID 为十六进制数字,可能由连字符分隔,字符串可以是任何内容。
例如,“086f3693-b7b3-4f2c-9653-21492feee5b8+hello”将插入与给定 UUID 关联的字符串“hello”。
- delete_filler
删除填充 NAL 单元和填充 SEI 消息。
- display_orientation
插入、提取或删除显示方向 SEI 消息。有关语法和语义,请参阅 H.264 第 D.1.27 和 D.2.27 节。
- ‘pass’
- ‘insert’
- ‘remove’
- ‘extract’
默认为通过。
插入模式与旋转和翻转选项配合使用。任何预先存在的显示方向消息都将在插入或删除模式下被删除。提取模式将显示矩阵作为附加数据附加到数据包。
- rotate
设置显示方向 SEI 中的旋转(逆时针角度,单位为度)。范围为 -360 到 +360。默认值为 NaN。
- flip
设置显示方向 SEI 中的翻转。
- ‘horizontal’
- ‘vertical’
默认值为未设置。
- level
设置 SPS 中的级别。请参阅 H.264 第 A.3 节和表 A-1 至 A-5。
参数必须是级别的名称(例如,“4.2”)、level_idc 值(例如,“42”)或特殊名称“auto”,表示过滤器应尝试从输入流属性中猜测级别。
2.12 h264_mp4toannexb
将 H.264 比特流从长度前缀模式转换为起始代码前缀模式(如 ITU-T H.264 规范附件 B 中定义)。
这是某些流媒体格式所必需的,通常是 MPEG-2 传输流格式(muxer mpegts)。
例如,要使用 ffmpeg 将包含 H.264 流的 MP4 文件重新混合为 mpegts 格式,您可以使用以下命令:
ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
请注意,此过滤器会自动插入 MPEG-TS(muxer mpegts)和原始 H.264(muxer h264)输出格式。
2.13 h264_redundant_pps
这会对某些蓝光流应用特定的修复,这些流包含多余的 PPS,会修改流的不相关参数,从而混淆需要正确额外数据的其他转换。
2.14 hevc_metadata
修改嵌入在 HEVC 流中的元数据。
- aud
在流的所有访问单元中插入或删除 AUD NAL 单元。
- ‘insert’
- ‘remove’
- sample_aspect_ratio
在 VUI 参数中设置流中的样本宽高比。
- video_format
- video_full_range_flag
设置流中的视频格式(参见 H.265 第 E.3.1 节和表 E.2)。
- colour_primaries
- transfer_characteristics
- matrix_coefficients
设置流中的颜色描述(参见 H.265 第 E.3.1 节和表 E.3、E.4 和 E.5)。
- chroma_sample_loc_type
设置流中的色度样本位置(参见 H.265 第 E.3.1 节和图 E.1)。
- tick_rate
设置 VPS 和 VUI 参数中的刻度率(time_scale / num_units_in_tick)。与 num_ticks_poc_diff_one 结合,可在流中设置恒定帧速率。请注意,当流位于容器中时,它很可能会被容器参数覆盖。
- num_ticks_poc_diff_one
在 VPS 和 VUI 中设置 poc_proportional_to_timing_flag,并使用此值设置 num_ticks_poc_diff_one_minus1(请参阅 H.265 第 7.4.3.1 和 E.3.1 节)。如果tick_rate未设置,则忽略。
- crop_left
- crop_right
- crop_top
- crop_bottom
在 SPS 中设置一致性窗口裁剪偏移量。如果流已被裁剪,这些值将替换当前值。
这些字段以像素为单位设置。请注意,如果色度被二次采样,某些尺寸可能无法表示(H.265 第 7.4.3.2.1 节)。
- width
- height
设置裁剪后的宽度和高度。
- level
在 VPS 和 SPS 中设置级别。请参阅 H.265 第 A.4 节和表 A.6 和 A.7。
参数必须是级别的名称(例如,“5.1”)、general_level_idc 值(例如,级别 5.1 为“153”)或特殊名称“auto”,表示过滤器应尝试从输入流属性中猜测级别。
2.15 hevc_mp4toannexb
将 HEVC/H.265 比特流从长度前缀模式转换为起始代码前缀模式(如 ITU-T H.265 规范附件 B 中定义)。
这是某些流媒体格式所必需的,通常是 MPEG-2 传输流格式(muxer mpegts)。
例如,要使用 ffmpeg 将包含 HEVC 流的 MP4 文件重新混合为 mpegts 格式,您可以使用以下命令:
ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
请注意,此过滤器会自动插入 MPEG-TS(muxer mpegts)和原始 HEVC/H.265(muxer h265 或 hevc)输出格式。
2.16 imxdump
修改比特流以适应 MOV 并可供 Final Cut Pro 解码器使用。此过滤器仅适用于 mpeg2video 编解码器,对于具有适当 -tag:v 的 Final Cut Pro 7 及更新版本可能不需要。
例如,将 30 MB/秒 NTSC IMX 重新转换为 MOV:
ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov
2.17 mjpeg2jpeg
将 MJPEG/AVI1 数据包转换为完整的 JPEG/JFIF 数据包。
MJPEG 是一种视频编解码器,其中每个视频帧本质上都是一个 JPEG 图像。可以无损提取各个帧,例如作者:
ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
不幸的是,这些块是不完整的 JPEG 图像,因为它们缺少解码所需的 DHT 段。引自 http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml:
Avery Lee 于 2001 年在 rec.video.desktop 新闻组撰文评论道:“MJPEG,或者至少是具有 MJPG fourcc 的 AVI 中的 MJPEG,是受限的 JPEG,带有固定的(且*省略*)Huffman 表。JPEG 必须是 YCbCr 色彩空间,必须是 4:2:2,并且必须使用基本 Huffman 编码,而不是算术或渐进编码。……您确实可以提取 MJPEG 帧并使用常规 JPEG 解码器对其进行解码,但您必须将 DHT 段添加到它们前面,否则解码器将不知道如何解压缩数据。所需的确切表格在 OpenDML 规范中给出。”
此比特流过滤器修补从 MJPEG 流中提取的帧的标头(带有 AVI1 标头 ID 且缺少 DHT 段)以生成完全合格的 JPEG 图像。
ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
exiftran -i -9 frame*.jpg
ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
2.18 mjpegadump
向比特流添加 MJPEG A 标头,以便通过 Quicktime 进行解码。
2.19 mov2textsub
从 MOV 字幕中提取可表示的文本文件,从每个字幕包中剥离元数据标头。
另请参阅 text2movsub 过滤器。
2.20 mpeg2_metadata
修改嵌入在 MPEG-2 流中的元数据。
- display_aspect_ratio
设置流中的显示宽高比。
支持以下固定值:
- 4/3
- 16/9
- 221/100
任何其他值都将导致方形像素被信号化(参见 H.262 第 6.3.3 节和表 6-3)。
- frame_rate
设置流中的帧速率。它由已知值表与小乘数和除数组合而成 - 如果提供的值不能精确表示,则将使用最接近的可表示值(参见 H.262 第 6.3.3 节和表 6-4)。
- video_format
设置流中的视频格式(请参阅 H.262 第 6.3.6 节和表 6-6)。
- colour_primaries
- transfer_characteristics
- matrix_coefficients
设置流中的颜色描述(请参阅 H.262 第 6.3.6 节和表 6-7、6-8 和 6-9)。
2.21 mpeg4_unpack_bframes
解压 DivX 样式的打包 B 帧。
DivX 样式的打包 B 帧不是有效的 MPEG-4,只是损坏的 Windows Video 子系统的一种解决方法。它们占用更多空间,可能导致轻微的 AV 同步问题,需要更多 CPU 能力来解码(除非播放器有一些解码的图片队列来补偿每包 2,0,2,0 帧的样式),并且如果复制到标准容器(如 mp4 或 mpeg-ps/ts)中会造成麻烦,因为 MPEG-4 解码器可能无法解码它们,因为它们不是有效的 MPEG-4。
例如,要使用 ffmpeg 修复包含带有 DivX 样式打包 B 帧的 MPEG-4 流的 AVI 文件,您可以使用以下命令:
ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi
2.22 noise
损坏数据包的内容或只是丢弃它们而不损坏容器。可用于模糊测试或测试错误恢复/隐藏。
参数:
- amount
接受一个表达式,该表达式对每个数据包的评估决定了该数据包中的字节被修改的频率。低于 0 的值将导致可变频率。默认值为 0,表示不进行修改。但是,如果未指定 amount 和 drop,则 amount 将设置为 -1。请参阅下文了解可接受的变量。
- drop
接受按数据包计算的表达式,该表达式的值决定该数据包是否被丢弃。计算结果为正值将导致数据包被丢弃。计算结果为负值将导致数据包被丢弃的概率可变,大致与值的大小成反比。默认值为 0,表示不丢弃。请参阅下文了解可接受的变量。
- dropamount
接受非负整数,该整数指定数据包被丢弃的概率可变,大致与值成反比。默认值为 0,表示不丢弃。此选项是为了向后兼容而保留的,相当于将 drop 设置为具有相同大小的负值,即 dropamount=4 与 drop=-4 相同。如果还指定了 drop,则忽略。
amount 和 drop 均接受包含以下变量的表达式:
- ‘n’
数据包的索引,从零开始。
- ‘tb’
数据包时间戳的时间基准。
- ‘pts’
数据包显示时间戳。
- ‘dts’
数据包解码时间戳。
- ‘nopts’
表示 AV_NOPTS_VALUE 的常量。
- ‘startpts’
在流中看到的第一个非 AV_NOPTS_VALUE PTS。
- ‘startdts’
在流中看到的第一个非 AV_NOPTS_VALUE DTS。
- ‘duration’
- ‘d’
数据包持续时间,以时间基为单位。
- ‘pos’
输入中的数据包位置;未知或未设置时可能为 -1。
- ‘size’
数据包大小,以字节为单位。
- ‘key’
数据包是否标记为关键帧。
- ‘state’
伪随机整数,主要来自数据包有效负载的内容。
2.22.1 示例
对每个字节应用修改但不丢弃任何数据包。
ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv
在时间戳 30 秒后丢弃未标记为关键帧的每个视频数据包,但不修改任何剩余数据包。
ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(t\,30)*not(key)' output.mkv
每 10 秒丢弃一秒的音频,并为其余部分添加一些随机噪声。
ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(t\,10)\,9\,10)' output.mkv
2.23 null
此比特流过滤器使数据包不加改变地通过。
2.24 pcm_rechunk
将 PCM 音频重新打包为每包固定数量的样本或每秒固定的数据包速率。这类似于 (ffmpeg-filters)asetnsamples 音频过滤器,但作用于音频包而不是音频帧。
- nb_out_samples, n
设置每个输出音频包的样本数。该数字表示每个通道的样本数。默认值为 1024。
- pad, p
如果设置为 1,过滤器将用静音填充最后一个音频包,以便它包含与前几个相同的样本数(或大致相同的样本数,请参阅 frame_rate)。默认值为 1。
- frame_rate, r
此选项使过滤器每秒输出固定数量的数据包,而不是每个数据包输出固定数量的样本。如果音频采样率不能被帧速率整除,则样本数将不是恒定的,而是会略有变化,以便每个数据包尽可能靠近帧边界开始。使用此选项优先于 nb_out_samples。
您可以使用 frame_rate 选项为 NTSC 帧速率生成众所周知的 1602-1601-1602-1601-1602 模式的 48kHz 音频。
ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -
2.25 pgs_frame_merge
将以“显示集结束”段结尾的一系列 PGS 字幕段合并为单个数据包。
这是某些支持 PGS 字幕(muxer matroska)的容器所必需的。
2.26 prores_metadata
修改嵌入在 prores 流中的颜色属性元数据。
- color_primaries
设置原色。可用值为:
- ‘auto’
保留相同的原色属性(默认)。
- ‘unknown’
- ‘bt709’
- ‘bt470bg’
BT601 625
- ‘smpte170m’
BT601 525
- ‘bt2020’
- ‘smpte431’
DCI P3
- ‘smpte432’
P3 D65
- transfer_characteristics
设置颜色传输。可用值为:
- ‘auto’
保持相同的传输特性属性(默认)。
- ‘unknown’
- ‘bt709’
BT 601、BT 709、BT 2020
- ‘smpte2084’
SMPTE ST 2084
- ‘arib-std-b67’
ARIB STD-B67
- matrix_coefficients
设置矩阵系数。可用值为:
- ‘auto’
保留相同的颜色空间属性(默认)。
- ‘unknown’
- ‘bt709’
- ‘smpte170m’
BT 601
- ‘bt2020nc’
为文件的每一帧设置 Rec709 色彩空间
ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov
为文件的每一帧设置混合对数伽马参数
ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov
2.27 remove_extra
从数据包中删除额外数据。
它接受以下参数:
- freq
设置从哪些帧类型中删除额外数据。
- ‘k’
仅从非关键帧中删除额外数据。
- ‘keyframe’
仅从关键帧中删除额外数据。
- ‘e, all’
从所有帧中删除额外数据。
2.28 setts
在数据包中设置 PTS 和 DTS。
它接受以下参数:
- ts
- pts
- dts
设置 PTS、DTS 或两者的表达式。
- duration
设置持续时间的表达式。
- time_base
设置输出时间基准。
表达式通过 eval API 进行评估,可以包含以下常量:
- N
输入数据包的计数。从 0 开始。
- TS
如果是 ts 或 dts 选项,则为输入中的解复用时间戳;如果是 pts 选项,则为演示时间戳。
- POS
数据包在文件中的原始位置,如果当前数据包未定义,则未定义
- DTS
输入中的解复用时间戳。
- PTS
输入中的显示时间戳。
- DURATION
输入中的持续时间。
- STARTDTS
第一个数据包的 DTS。
- STARTPTS
第一个数据包的 PTS。
- PREV_INDTS
上一个输入 DTS。
- PREV_INPTS
上一个输入 PTS。
- PREV_INDURATION
上一个输入持续时间。
- PREV_OUTDTS
上一个输出 DTS。
- PREV_OUTPTS
上一个输出 PTS。
- PREV_OUTDURATION
上一个输出持续时间。
- NEXT_DTS
下一个输入 DTS。
- NEXT_PTS
下一个输入 PTS。
- NEXT_DURATION
下一个输入持续时间。
- TB
流包所属的时间基。
- TB_OUT
输出时间基。
- SR
流数据包所属的采样率。
- NOPTS
AV_NOPTS_VALUE 常量。
例如,将 PTS 设置为等于 DTS(如果涉及 B 帧则不建议):
ffmpeg -i INPUT -c:a copy -bsf:a setts=pts=DTS out.mkv
2.29 showinfo
记录基本数据包信息。主要用于测试、调试和开发。
2.30 text2movsub
使用元数据标头将文本字幕转换为 MOV 字幕(由 mov_text 编解码器使用)。
另请参阅 mov2textsub 过滤器。
2.31 trace_headers
记录跟踪输出,其中包含编码流标头中的所有语法元素(高于单个编码块级别的所有内容)。这对于调试低级流问题很有用。
支持 AV1、H.264、H.265、(M)JPEG、MPEG-2 和 VP9,但根据版本,可能只有其中的一部分可用。
2.32 truehd_core
从 TrueHD 流中提取核心,删除 ATMOS 数据。
2.33 vp9_metadata
修改嵌入在 VP9 流中的元数据。
- color_space
在帧头中设置色彩空间值。请注意,任何设置为 RGB 的帧都将隐式设置为 PC 范围,并且 RGB 与配置文件 0 和 2 不兼容。
- ‘unknown’
- ‘bt601’
- ‘bt709’
- ‘smpte170’
- ‘smpte240’
- ‘bt2020’
- ‘rgb’
- color_range
在帧头中设置颜色范围值。请注意,颜色空间强加的任何值都将优先于此值。
- ‘tv’
- ‘pc’
2.34 vp9_superframe
将 VP9 不可见 (alt-ref) 帧合并回 VP9 超帧。这修复了拆分/分段 VP9 流的合并问题,其中 alt-ref 帧与其可见对应帧拆分。
2.35 vp9_superframe_split
将 VP9 超帧拆分为单个帧。
2.36 vp9_raw_reorder
给定一个具有正确时间戳但可能无序的 VP9 流,插入额外的 show-existing-frame 数据包以更正排序。