FFplay文档解读-7-比特流过滤器
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 AAC
或MPEG-TS
容器复制到MP4A-LATM,FLV
文件或MOV / MP4
文件以及相关格式(如3GP或M4A)时,需要此过滤器。 请注意,它是自动插入MP4A-LATM
和MOV / 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 / PPS
)in-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
文件的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
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.264
第E.2.1
节和表E-3
,E-4
和E-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.264
第E.2.1
节和表E-6
)。
crop_left
crop_right
crop_top
crop_bottom
在SPS
中设置帧裁剪偏移。 如果已经裁剪了流,这些值将替换当前值。
这些字段以像素为单位。 请注意,如果色度被二次采样或流是隔行扫描的,则某些尺寸可能无法表示(参见H.264
第7.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.3
,E.4
和E.5
)。
chroma_sample_loc_type
设置流中的色度样本位置(参见H.265 E.3.1
节和图E.1
)。
tick_rate
在VPS
和VUI
参数(num_units_in_tick / time_scale
)中设置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
节和第3.3
节)。 如果未设置tick_rate
,则忽略。
crop_left
crop_right
crop_top
crop_bottom
在SPS
中设置一致性窗口裁剪偏移。 如果已经裁剪了流,这些值将替换当前值。
这些字段以像素为单位。 请注意,如果对色度进行二次采样,则某些尺寸可能无法表示(H.265
第7.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.265
(muxer h265
或hevc
)输出格式自动插入的。
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 Lee
在2001
年的rec.video.desktop
新闻组写道,评论说“MJPEG,或者至少是具有MJPG fourcc
的AVI
中的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.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
)。
11.20 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
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.264
,H.265
和MPEG-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-比特流过滤器相关推荐
- FFplay文档解读-46-视频源,视频接收器
30. 视频源 以下是当前可用视频源的说明. 30.1 buffer 缓冲视频帧,并使其可用于过滤器链. 该源主要用于编程用途,特别是通过'libavfilter/vsrc_buffer.h'中定义的 ...
- FFplay文档解读-13-设备选项,输入设备一
17.设备选项 libavdevice库提供与libavformat相同的接口. 即,输入设备被视为分路器,输出设备如复用器,接口和通用设备选项与libavformat相同(参见ffmpeg-form ...
- FFplay文档解读-22-音频过滤器七
26.60 loudnorm EBU R128响度归一化.包括动态和线性归一化模式.支持单通道(直播,文件)和双通(文件)模式.该算法可以针对IL,LRA和最大真实峰值.为了准确地检测真实峰值,音频流 ...
- FFplay文档解读-41-视频过滤器十六
29.150 selectivecolor 将青色,品红色,黄色和黑色(CMYK)调整为特定颜色范围(例如"reds","yellows","gree ...
- FFplay文档解读-16-音频过滤器一
26. 音频过滤器 配置FFmpeg构建时,可以使用--disable-filters禁用任何现有过滤器. 配置输出将显示构建中包含的音频过滤器. 以下是当前可用音频过滤器的说明. 26.1 acom ...
- FFplay文档解读-5-编解码器选项二
设置sub pel me比较功能. 可能的取值如下: 值 解释 sad 绝对差值之和,fast(默认) sse 平方误差之和 satd 绝对Hadamard的总和改变了差异 dct 绝对DCT转换差异 ...
- FFplay文档解读-47-多媒体过滤器一
32. 多媒体过滤器 以下是当前可用的多媒体过滤器的说明. 32.1 abitscope 将输入音频转换为视频输出,显示音频位范围. 过滤器接受以下选项: rate,r 设置帧速率,表示为每秒帧数. ...
- FFplay文档解读-49-多媒体过滤器三
32.14 sendcmd, asendcmd 将命令发送到filtergraph中的过滤器. 这些过滤器读取要发送到filtergraph中其他过滤器的命令. 必须在两个视频滤镜之间插入sendcm ...
- FFplay文档解读-43-视频过滤器十八
29.170 telecine 将电视电影处理应用于视频. 此过滤器接受以下选项: first_field 选项 解释 top, t top field first bottom, b 底部字段优先默 ...
最新文章
- npm缺少css-loader,/style-compiler,stylus-loader问题,npm没有权限无法全局更新问题【已解决】
- iphone软件创富密码之关于Cocoa版的Hello World程序
- OpenCv——merge()函数数据合并
- apache 工作模式prefork进程模式和worker线程模式参式详解和推荐设置
- 使用 NVM 管理不同的 Node.js 版本
- [举一反三]使用javascript转换字符串为dom对象(字符串动态创建dom)
- 【codevs3372】选学霸,并查集+可达性DP
- Python使用UDP协议打造在线时间服务器
- 【ARM-Linux开发】libxml/parser.h: 没有那个文件或目录解决方案
- 的谐音非诚勿扰_《菲诚勿扰》全网通缉24位女嘉宾
- orm框架与缓存的关系
- 彻底卸载SQL2005记录
- 华为android手机root,华为手机root权限获取教程
- 开学季学生党需要准备哪些数码好物,分享几款实用的数码好物
- CSS属性:字体属性和文本属性
- java五子棋技术路线_五子棋游戏程序设计(VB)
- 【全国计算机等级考试二级教程——C语言程序设计(2021年版)编程题答案-第7章】
- linux 扫描wifi
- fiddler显示连接不是私密连接
- 请编写一个程序,使用字典存储学生信息,学生信息包括学号和姓名,请根据学生学号从小到大输出学生的信息。