目录
- 1 描述
- 2 比特流过滤器
- 2.1 aac_adtstoasc
- 2.2 av1_metadata
- 2.3 chomp
- 2.4 dca_core
- 2.5 dovi_rpu
- 2.6 dump_extra
- 2.7 dv_error_marker
- 2.8 eac3_core
- 2.9 extract_extradata
- 2.10 filter_units
- 2.11 hapqa_extract
- 2.12 h264_metadata
- 2.13 h264_mp4toannexb
- 2.14 h264_redundant_pps
- 2.15 hevc_metadata
- 2.16 hevc_mp4toannexb
- 2.17 imxdump
- 2.18 mjpeg2jpeg
- 2.19 mjpegadump
- 2.20 mov2textsub
- 2.21 mpeg2_metadata
- 2.22 mpeg4_unpack_bframes
- 2.23 noise
- 2.24 null
- 2.25 pcm_rechunk
- 2.26 pgs_frame_merge
- 2.27 prores_metadata
- 2.28 remove_extra
- 2.29 setts
- 2.30 showinfo
- 2.31 text2movsub
- 2.32 trace_headers
- 2.33 truehd_core
- 2.34 vp9_metadata
- 2.35 vp9_superframe
- 2.36 vp9_superframe_split
- 2.37 vp9_raw_reorder
- 3 另请参阅
- 4 作者
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’
在每个还没有时间分隔符的 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 dovi_rpu
操作 HEVC/AV1 比特流中的杜比视界元数据,可以选择启用元数据压缩。
- strip
如果启用,则从流中删除所有杜比视界元数据(配置记录 + RPU 数据块)。
- compression
要启用的压缩级别。
- ‘none’
无元数据压缩。
- ‘limited’
有限的元数据压缩方案。应该与大多数设备兼容。这是默认值。
- ‘extended’
扩展的元数据压缩。设备不需要支持此功能。请注意,此级别在 libavcodec 中的行为目前与“limited”相同。
2.6 dump_extra
将额外数据添加到过滤后的数据包的开头,除非所述数据包已经完全以要添加的额外数据开始。
- freq
附加参数指定应过滤哪些数据包。它接受值
- ‘k’
- ‘keyframe’
向所有关键数据包添加额外数据
- ‘e’
- ‘all’
向所有数据包添加额外数据
如果未指定,则假定为“k”。
例如,以下 ffmpeg
命令强制在 libx264
编码器生成的 H.264 数据包中使用全局标头(因此禁用各个数据包标头),但通过将存储在额外数据中的标头添加到关键数据包来纠正它们
ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
2.7 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’
特定的错误状态代码
请参阅第 44-46 页或 http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf 的 5.5 节
2.8 eac3_core
从 E-AC-3 流中提取核心,删除额外的通道。
2.9 extract_extradata
提取带内额外数据。
某些编解码器允许长期标头(例如,MPEG-2 序列标头或 H.264/HEVC (VPS/)SPS/PPS)以“带内”(即,作为包含编码帧的比特流的一部分)或“带外”(例如,在容器级别)传输。在 FFmpeg 术语中,后一种形式称为“额外数据”。
此比特流过滤器检测带内标头并使它们可用作额外数据。
- remove
启用此选项后,提取后将从比特流中删除长期标头。
2.10 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.11 hapqa_extract
为了创建 HAPQ 或 HAPAlphaOnly 文件,在不重新压缩的情况下提取 HAPQA 文件的 Rgb 或 Alpha 部分。
- 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.12 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 中的 constraint_set4_flag 和 constraint_set5_flag 置零。 这些位在 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’
默认值为 pass。
插入模式与
rotate
和flip
选项结合使用。在插入或删除模式下,任何预先存在的显示方向消息都将被删除。提取模式将显示矩阵作为边数据附加到数据包。- 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.13 h264_mp4toannexb
将 H.264 比特流从长度前缀模式转换为起始代码前缀模式(如 ITU-T H.264 规范的附件 B 中定义)。
某些流格式需要此操作,通常是 MPEG-2 传输流格式(多路复用器 mpegts
)。
例如,要使用 ffmpeg
将包含 H.264 流的 MP4 文件重混为 mpegts 格式,可以使用以下命令
ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
请注意,此过滤器会自动插入 MPEG-TS(多路复用器 mpegts
)和原始 H.264(多路复用器 h264
)输出格式。
2.14 h264_redundant_pps
这会将特定的修复程序应用于一些包含冗余 PPS 的蓝光 BDMV H264 流。 PPS 修改流的不相关参数,这会混淆其他需要正确附加数据的转换。
在这些受影响的流上使用的编码器会在整个流中添加额外的 PPS,从而改变初始 QP 以及是否启用了加权预测。 这会导致将流复制到全局标头容器后出现问题,因为起始 PPS 不适合流的其余部分。 例如,一个副作用是,在出现新的 PPS 之前,搜索将返回乱码输出。
此 BSF 会删除额外的 PPS,并重写切片标头,以便流在全局标头中使用单个前导 PPS,从而解决此问题。
2.15 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),某些大小可能无法表示。
- 宽度
- 高度
设置裁剪后的宽度和高度。
- level
在 VPS 和 SPS 中设置级别。参见 H.265 章节 A.4 以及表 A.6 和 A.7。
参数必须是级别的名称(例如,‘5.1’)、general_level_idc 值(例如,级别 5.1 的 ‘153’)或特殊名称 ‘auto’,表示过滤器应尝试从输入流属性猜测级别。
2.16 hevc_mp4toannexb
将 HEVC/H.265 比特流从长度前缀模式转换为起始码前缀模式(如 ITU-T H.265 规范的附件 B 中所定义)。
某些流格式需要此操作,通常是 MPEG-2 传输流格式(多路复用器 mpegts
)。
例如,要使用 ffmpeg
将包含 HEVC 流的 MP4 文件重新混合为 mpegts 格式,可以使用以下命令
ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts
请注意,此过滤器会自动插入到 MPEG-TS (复用器 mpegts
) 和原始 HEVC/H.265 (复用器 h265
或 hevc
) 输出格式中。
2.17 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.18 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.19 mjpegadump
将 MJPEG A 标头添加到比特流,以启用 Quicktime 解码。
2.20 mov2textsub
从 MOV 字幕中提取可表示的文本文件,从每个字幕数据包中剥离元数据标头。
另请参阅 text2movsub 过滤器。
2.21 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.22 mpeg4_unpack_bframes
解包 DivX 样式的打包 B 帧。
DivX 样式的打包 B 帧不是有效的 MPEG-4,只是对损坏的 Windows 视频子系统的一种解决方法。它们使用更多的空间,可能会导致轻微的 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.23 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.23.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.24 null
此比特流过滤器将数据包原封不动地传递过去。
2.25 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 帧率生成众所周知的 48kHz 音频 1602-1601-1602-1601-1602 模式。
ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -
2.26 pgs_frame_merge
将以“显示集结束”段结尾的一系列 PGS 字幕段合并为单个数据包。
某些支持 PGS 字幕的容器(如复用器 matroska
)需要这样做。
2.27 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.28 remove_extra
从数据包中移除附加数据。
它接受以下参数:
- freq
设置要从中移除附加数据的帧类型。
- ‘k’
仅从非关键帧中移除附加数据。
- ‘keyframe’
仅从关键帧中移除附加数据。
- ‘e, all’
从所有帧中移除附加数据。
2.29 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.30 showinfo
记录基本数据包信息。主要用于测试、调试和开发。
2.31 text2movsub
使用元数据头将文本字幕转换为 MOV 字幕(由 mov_text
编解码器使用)。
另请参见 mov2textsub 滤镜。
2.32 trace_headers
记录包含编码流头中所有语法元素(高于单个编码块级别的所有内容)的跟踪输出。这对于调试底层流问题很有用。
支持 AV1、H.264、H.265、(M)JPEG、MPEG-2 和 VP9,但根据构建版本,可能只有这些的一部分可用。
2.33 truehd_core
从 TrueHD 流中提取核心,删除 ATMOS 数据。
2.34 vp9_metadata
修改嵌入在 VP9 流中的元数据。
- color_space
在帧头中设置颜色空间值。请注意,任何设置为 RGB 的帧都将隐式设置为 PC 范围,并且 RGB 与配置文件 0 和 2 不兼容。
- ‘unknown’
- ‘bt601’
- ‘bt709’
- ‘smpte170’
- ‘smpte240’
- ‘bt2020’
- ‘rgb’
- color_range
在帧头中设置颜色范围值。请注意,颜色空间强加的任何值都将优先于此值。
- ‘tv’
- ‘pc’
2.35 vp9_superframe
将 VP9 不可见(alt-ref)帧合并回 VP9 超帧。这修复了分割/分段 VP9 流的合并问题,其中 alt-ref 帧与其可见对应帧分离。
2.36 vp9_superframe_split
将 VP9 超帧分割为单帧。
2.37 vp9_raw_reorder
给定一个具有正确时间戳但可能顺序错乱的 VP9 流,插入额外的 show-existing-frame 数据包以纠正顺序。
3 另请参阅
ffmpeg, ffplay, ffprobe, libavcodec
4 作者
FFmpeg 开发人员。
有关作者的详细信息,请参见项目的 Git 历史记录(https://git.ffmpeg.org/ffmpeg),例如,在 FFmpeg 源代码目录中键入命令 git log
,或者浏览在线存储库 https://git.ffmpeg.org/ffmpeg。
特定组件的维护人员在源代码树中的文件 MAINTAINERS 中列出。
本文档于 2025 年 1 月 21 日 使用 makeinfo 生成。
托管由 telepoint.bg 提供