11.比特流过滤器

配置FFmpeg构建时,默认情况下会启用所有支持的比特流过滤器。 您可以使用configure选项--list-bsfs列出所有可用的列表。

可以使用configure选项--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

以下是当前可用的比特流过滤器及其参数(如果有)的描述。

11.1 aac_adtstoasc

MPEG-2/4 AAC ADTS转换为MPEG-4音频特定配置比特流。

此过滤器从MPEG-2/4 ADTS标头创建MPEG-4 AudioSpecificConfig并删除ADTS标头。

例如,当将AAC流从原始ADTS AACMPEG-TS容器复制到MP4A-LATM,FLV文件或MOV / MP4文件以及相关格式(如3GP或M4A)时,需要此过滤器。 请注意,它是自动插入MP4A-LATMMOV / MP4及相关格式。

11.2 chomp

删除数据包末尾的零填充。

11.3 dca_core

DCA / DTS流中提取核心,删除DTS-HD等扩展。

 学习地址:音视频新手快速入门必备系列-FFmpeg+SDL播放器开发实现-学习视频教程-腾讯课堂
【文章福利】免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~

11.4 dump_extra

将extradata添加到过滤后的数据包的开头。

freq

附加参数指定应过滤哪些数据包。 它接受以下值:

解释
k
keyframe 为所有密钥包添加extradata
e
all 为所有数据包添加extradata

如果未指定,则假定为e

例如,以下ffmpeg命令强制libx264编码器生成的H.264数据包中的全局标头(从而禁用单个数据包标头),但通过将存储在extradata中的标头添加到密钥数据包来纠正它们:

 ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts

11.5 eac3_core

E-AC-3流中提取核心,丢弃额外的通道。

11.6 extract_extradata

某些编解码器允许长期报头(例如,MPEG-2序列报头,或H.264 / HEVC(VPS /)SPS / PPSin-band发送(即作为包含编码的比特流的一部分) 帧)或out of band(例如在容器级别)。 后一种形式在FFmpeg术语中称为extradata

该比特流过滤器检测带内标头并使其可用作额外数据。

remove

启用此选项后,将在提取后从比特流中删除长期标头。

11.7 filter_units

从流中删除具有或不在给定集中的类型的单元。

pass_types

移除所有其他单元类型或单元类型范围的列表。 这被指定为单位类型值的|分隔列表或带有-的值范围。

remove_types

pass_types相同,除了已删除给定集合中的单位以及所有其他单位都已通过。

此转换不会更改Extradata,但请注意,如果流包含内联参数集,则如果删除它们,则输出可能无法使用。

例如,要从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' OUTPU

11.8 hapqa_extract

在不重新压缩的情况下提取HAPQA文件的RgbAlpha部分,以便创建HAPQHAPAlphaOnly文件。

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

11.9 h264_metadata

修改H.264流中嵌入的元数据。

aud

在流的所有访问单元中插入或删除AUD NAL单元。

insert
remov
sample_aspect_ratio

VUI参数中设置流的样本宽高比。

video_formatvideo_full_range_flag

在流中设置视频格式(参见H.264第E.2.1节和表E-2)。

colour_primariestransfer_characteristicsmatrix_coefficients

在流中设置颜色描述(参见H.264E.2.1节和表E-3E-4E-5)。

chroma_sample_loc_type

设置流中的色度样本位置(参见H.264第E.2.1节和图E-1)。

tick_rate

VUI参数中设置滴答率(num_units_in_tick / time_scale)。 这是流中可表示的最小时间单位,并且在许多情况下表示流的字段速率(帧速率的两倍)。

fixed_frame_rate_flag

设置流是否具有固定帧速率 - 通常这表示帧速率恰好是滴答速率的一半,但确切含义取决于隔行扫描和图像结构(参见H.264E.2.1节和表E-6)。

crop_left

crop_right

crop_top

crop_bottom

SPS中设置帧裁剪偏移。 如果已经裁剪了流,这些值将替换当前值。

这些字段以像素为单位。 请注意,如果色度被二次采样或流是隔行扫描的,则某些尺寸可能无法表示(参见H.2647.4.2.1.1节)。

sei_user_data

将字符串作为SEI未注册的用户数据插入。 参数必须是UUID +字符串的形式,其中UUID是十六进制数字,可能用连字符分隔,字符串可以是任何字符串。

例如,086f3693-b7b3-4f2c-9653-21492feee5b8 + hello将插入与给定UUID相关联的字符串hello

delete_filler

删除填充NAL单元和填充SEI消息。

11.10 h264_mp4toannexb

将H.264比特流从长度前缀模式转换为起始码前缀模式(如ITU-T H.264规范的附录B中所定义)。

请注意,此滤波器是为MPEG-TS(muxer mpegts)和原始H.264(muxer h264)输出格式自动插入的。

11.11 h264_redundant_pps

这适用于某些蓝光流的特定修正,其中包含冗余PPS,修改流的不相关参数,这会混淆需要正确的额外数据的其他转换。

创建新的单个全局PPS,并删除流中的所有冗余PPS

11.12 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.3E.4E.5)。

chroma_sample_loc_type

设置流中的色度样本位置(参见H.265 E.3.1节和图E.1)。

tick_rate

VPSVUI参数(num_units_in_tick / time_scale)中设置tick速率。 与num_ticks_poc_diff_one结合使用,可以在流中设置恒定的帧速率。 请注意,当流位于容器中时,容器参数可能会覆盖它。

num_ticks_poc_diff_one

VPSVUI中设置poc_proportional_to_timing_flag并使用该值设置num_ticks_poc_diff_one_minus1(参见H.2657.4.3.1节和第3.3节)。 如果未设置tick_rate,则忽略。

crop_left

crop_right

crop_top

crop_bottom

SPS中设置一致性窗口裁剪偏移。 如果已经裁剪了流,这些值将替换当前值。

这些字段以像素为单位。 请注意,如果对色度进行二次采样,则某些尺寸可能无法表示(H.2657.4.3.2.1节)。

11.13 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.265muxer h265hevc)输出格式自动插入的。

11.14 imxdump

修改比特流以适应MOV并可由Final Cut Pro解码器使用。 此过滤器仅适用于mpeg2video编解码器,对于Final Cut Pro 7而言可能不需要使用此过滤器,而对于相应的-tag:v则更新。

例如,要将30 MB /秒的NTSC IMX重新复制到MOV

ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov

11.15 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 Lee2001年的rec.video.desktop新闻组写道,评论说“MJPEG,或者至少是具有MJPG fourccAVI中的MJPEG,是受限制的JPEG,限制JPEG与固定 - 和*省略* - 霍夫曼表。JPEG必须 是YCbCr颜色空间,它必须是4:2:2,并且它必须使用基本的霍夫曼编码,而不是算术或渐进...你确实可以提取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

11.16 mjpegadump

MJPEG A标头添加到比特流,以启用Quicktime解码。

11.17 mov2textsub

MOV字幕中提取可表示的文本文件,从每个字幕包中剥离元数据头。

另请参见text2movsub过滤器。

11.18 mp3decomp

解压缩非标准压缩MP3音频标头。

11.19 mpeg2_metadata

修改嵌入在MPEG-2流中的元数据。

display_aspect_ratio

在流中设置显示宽高比。

支持以下固定值:

4/3
16/9
221/100

任何其他值都将导致方形像素被发信号通知(参见H.2626.3.3节和表6-3)。

frame_rate

在流中设置帧速率。 这是由已知值与小乘数和除数组合构成的表 - 如果提供的值不能准确表示,则将使用最接近的可表示值(参见H.2626.3.3节和表6-4)。

video_format

在流中设置视频格式(参见H.2626.3.6节和表6-6)。

colour_primaries

transfer_characteristics

matrix_coefficients

在流中设置颜色描述(参见H.2626.3.6节和表6-7,6-86-9)。

11.20 mpeg4_unpack_bframes

打开DivX风格的打包B帧。

DivX风格的打包B帧不是有效的MPEG-4,只是Windows子系统损坏的视频的一种解决方法。 它们使用更多空间,可能导致轻微的AV同步问题,需要更多CPU能力进行解码(除非播放器有一些解码图像队列来补偿每个数据包样式的2,0,2,0帧)并且如果复制到标准中会造成麻烦 容器如mp4mpeg-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

11.21 noise

损坏数据包的内容或简单地丢弃它们而不损坏容器。 可用于模糊测试或测试错误恢复/隐藏。

参数:

amount

数字字符串,其值与输出字节的修改频率有关。 因此,禁止低于或等于0的值,越频繁的字节将被修改,1意味着每个字节被修改。

dropamount

数字字符串,其值与数据包的丢弃频率有关。 因此,禁止低于或等于0的值,越低频率的数据包将被丢弃,1表示每个数据包被丢弃。

以下示例将修改应用于每个字节但不丢弃任何数据包。

ffmpeg -i INPUT -c copy -bsf noise[=1] output.mkv

11.22 null

该比特流过滤器不加改变地传递数据包。

11.23 remove_extra

从数据包中删除extradata

它接受以下参数:

freq

设置要从中删除extradata的帧类型。

解释
k 仅从非关键帧中删除extradata
keyframe 仅从关键帧中删除extradata
e, all 从所有帧中删除extradata

11.24 text2movsub

使用元数据标题将文本字幕转换为MOV字幕(由mov_text编解码器使用)。

另请参见mov2textsub过滤器。

11.25 trace_headers

记录跟踪输出,包含编码流标题中的所有语法元素(高于单个编码块级别的所有内容)。 这对于调试低级流问题非常有用。

支持H.264H.265MPEG-2

11.26 vp9_superframe

VP9不可见(alt-ref)帧合并回VP9超帧。 这修复了拆分/分段VP9流的合并,其中alt-ref帧与其可见对应物分开。

11.27 vp9_superframe_split

VP9超帧拆分为单帧。

11.28 vp9_raw_reorder

给定具有正确时间戳但可能无序的VP9流,插入额外的show-existing-frame数据包以纠正排序。

FFplay文档解读-7-比特流过滤器相关推荐

  1. FFplay文档解读-46-视频源,视频接收器

    30. 视频源 以下是当前可用视频源的说明. 30.1 buffer 缓冲视频帧,并使其可用于过滤器链. 该源主要用于编程用途,特别是通过'libavfilter/vsrc_buffer.h'中定义的 ...

  2. FFplay文档解读-13-设备选项,输入设备一

    17.设备选项 libavdevice库提供与libavformat相同的接口. 即,输入设备被视为分路器,输出设备如复用器,接口和通用设备选项与libavformat相同(参见ffmpeg-form ...

  3. FFplay文档解读-22-音频过滤器七

    26.60 loudnorm EBU R128响度归一化.包括动态和线性归一化模式.支持单通道(直播,文件)和双通(文件)模式.该算法可以针对IL,LRA和最大真实峰值.为了准确地检测真实峰值,音频流 ...

  4. FFplay文档解读-41-视频过滤器十六

    29.150 selectivecolor 将青色,品红色,黄色和黑色(CMYK)调整为特定颜色范围(例如"reds","yellows","gree ...

  5. FFplay文档解读-16-音频过滤器一

    26. 音频过滤器 配置FFmpeg构建时,可以使用--disable-filters禁用任何现有过滤器. 配置输出将显示构建中包含的音频过滤器. 以下是当前可用音频过滤器的说明. 26.1 acom ...

  6. FFplay文档解读-5-编解码器选项二

    设置sub pel me比较功能. 可能的取值如下: 值 解释 sad 绝对差值之和,fast(默认) sse 平方误差之和 satd 绝对Hadamard的总和改变了差异 dct 绝对DCT转换差异 ...

  7. FFplay文档解读-47-多媒体过滤器一

    32. 多媒体过滤器 以下是当前可用的多媒体过滤器的说明. 32.1 abitscope 将输入音频转换为视频输出,显示音频位范围. 过滤器接受以下选项: rate,r 设置帧速率,表示为每秒帧数. ...

  8. FFplay文档解读-49-多媒体过滤器三

    32.14 sendcmd, asendcmd 将命令发送到filtergraph中的过滤器. 这些过滤器读取要发送到filtergraph中其他过滤器的命令. 必须在两个视频滤镜之间插入sendcm ...

  9. FFplay文档解读-43-视频过滤器十八

    29.170 telecine 将电视电影处理应用于视频. 此过滤器接受以下选项: first_field 选项 解释 top, t top field first bottom, b 底部字段优先默 ...

最新文章

  1. npm缺少css-loader,/style-compiler,stylus-loader问题,npm没有权限无法全局更新问题【已解决】
  2. iphone软件创富密码之关于Cocoa版的Hello World程序
  3. OpenCv——merge()函数数据合并
  4. apache 工作模式prefork进程模式和worker线程模式参式详解和推荐设置
  5. 使用 NVM 管理不同的 Node.js 版本
  6. [举一反三]使用javascript转换字符串为dom对象(字符串动态创建dom)
  7. 【codevs3372】选学霸,并查集+可达性DP
  8. Python使用UDP协议打造在线时间服务器
  9. 【ARM-Linux开发】libxml/parser.h: 没有那个文件或目录解决方案
  10. 的谐音非诚勿扰_《菲诚勿扰》全网通缉24位女嘉宾
  11. orm框架与缓存的关系
  12. 彻底卸载SQL2005记录
  13. 华为android手机root,华为手机root权限获取教程
  14. 开学季学生党需要准备哪些数码好物,分享几款实用的数码好物
  15. CSS属性:字体属性和文本属性
  16. java五子棋技术路线_五子棋游戏程序设计(VB)
  17. 【全国计算机等级考试二级教程——C语言程序设计(2021年版)编程题答案-第7章】
  18. linux 扫描wifi
  19. fiddler显示连接不是私密连接
  20. 请编写一个程序,使用字典存储学生信息,学生信息包括学号和姓名,请根据学生学号从小到大输出学生的信息。

热门文章

  1. 华硕笔记本BIOS设置u盘启动图文详解
  2. 黄柳青:中国软件的致命缺陷是什么!
  3. ubuntu 双屏显示的设置
  4. 如何把microsoft store里面的软件添加到桌面
  5. with dlz mysql 条件_BIND+DLZ+MYSQL实现区域记录动态更新
  6. 验证 网址,IP,邮箱,电话,手机,数字,英文,日期,身份证,邮编
  7. K8S------概述
  8. day02 软考习题理解
  9. pwn暑假训练(十) emem这次的测验自己还是太菜
  10. 一步步看α-β剪枝算法