FFplay文档解读-19-音频过滤器四
前言
Github
地址:Github
简书地址:简书
专辑地址:FFplay专辑
26.31 astats
显示有关音频通道的时域统计信息。 计算并显示每个音频通道的统计数据,并在适用的情况下给出总体数字。
它接受以下选项:
length
短窗长度,以秒为单位,用于峰值和谷值RMS
测量。 默认值为0.05
(50
毫秒)。 允许范围为[0.01 - 10]
。
metadata
设置元数据注入。 所有元数据键都以lavfi.astats.X
为前缀,其中X
是从1开始的通道编号或字符串整体。 默认为禁用。
每个通道的可用键是:DC_offset Min_level Max_level Min_difference Max_difference Mean_difference RMS_difference Peak_level RMS_peak RMS_trough Crest_factor Flat_factor Peak_count Bit_depth Dynamic_range
总体而言:DC_offset Min_level Max_level Min_difference Max_difference Mean_difference RMS_difference Peak_level RMS_level RMS_peak RMS_trough Flat_factor Peak_count Bit_depth Number_of_samples
例如,全键看起来像这个lavfi.astats.1.DC_offset
或者这个lavfi.astats.Overall.Peak_count
。
有关每个键的含义,请参阅下文:
reset
设置要重新计算统计数据的帧数。默认为禁用。
每个显示的参数的描述如下:
DC offset
从零开始的平均幅度位移。
Min level
最低样本水平。
Max level
最大样本水平。
Min difference
两个连续样本之间的最小差异。
Max difference
两个连续样本之间的最大差异。
Mean difference
两个连续样本之间的平均差异。两个连续样本之间每个差异的平均值。
RMS difference
两个连续样本之间的均方根差异。
Peak level dB
RMS level dB
标准峰值和RMS
水平以dBFS
为单位。
RMS peak dB
RMS trough dB
通过短窗口测量的RMS
水平的峰值和谷值。
Crest factor
标准峰值与RMS
水平之比(注意:不以dB
为单位)。
Flat factor
信号在其峰值水平(即最小水平或最大水平)的平坦度(即具有相同值的连续样本)。
Peak count
信号达到最低级别或最高级别的次数(不是样本数)。
Bit depth
音频的总位深度。每个样本使用的位数。
Dynamic range
以dB
为单位测量的音频动态范围。
26.32 atempo
调整音频速度。
过滤器只接受一个参数,即音频速度。 如果未指定,则过滤器将采用标称1.0
速度。 速度必须在[0.5,2.0]
范围内。
26.32.1 示例
-
将音频降低到
80%
的速度:atempo=0.8
-
要将音频加速到
125%
的速度:atempo=1.25
26.33 atrim
修剪输入,使输出包含输入的一个连续子部分。
它接受以下参数:
start
要保留的部分开头的时间戳(以秒为单位)。即具有时间戳开始的音频样本将是输出中的第一个样本。
end
指定将要丢弃的第一个音频样本的时间,即紧接在具有时间戳结束的音频样本之前的音频样本将是输出中的最后一个样本。
start_pts
与start
相同,但此选项设置样本中的开始时间戳而不是秒。
end_pts
与end
相同,但此选项设置样本中的结束时间戳而不是秒。
duration
输出的最大持续时间(以秒为单位)。
start_sample
应输出的第一个样本的编号。
end_sample
应删除的第一个样本的编号。
'start'
,'end'
和'duration'
表示为持续时间规范;请参阅(ffmpeg-utils)持续时间语法
。
请注意,前两组start/end
选项和'duration'
选项查看帧时间戳,而_sample
选项只计算通过过滤器的样本。因此,当时间戳错误,不精确或不从零开始时,start/end_pts
和start/end_sample
将给出不同的结果。另请注意,此过滤器不会修改时间戳。如果希望输出时间戳从零开始,请在atrim
过滤器后插入asetpts
过滤器。
如果设置了多个开始或结束选项,则此过滤器会尝试贪婪,并保留与至少一个指定约束匹配的所有样本。要仅保留匹配所有约束的部分,请链接多个atrim
过滤器。
默认值是保留所有输入。所以可以设置例如只是最终值,以保持指定时间之前的一切。
下面是示例:
-
删除除输入的第二分钟以外的所有内容:
ffmpeg -i INPUT -af atrim=60:120
-
仅保留前1000个样本:
ffmpeg -i INPUT -af atrim=end_sample=1000
26.34 bandpass
应用具有中心频率和(3dB
点)带宽宽度的双极Butterworth
带通滤波器。 csg
选项选择恒定裙边增益(peak gain = Q
)而不是默认值:恒定0dB peak gain
。 滤波器以每倍频程6dB(20dB per decade)
滚降。
过滤器接受以下选项:
frequency, f
设置滤波器的中心频率。 默认值为3000
。
csg
如果设置为1
,则恒定裙摆增益。默认为0
。
width_type,t
设置方法以指定过滤器的带宽:
参数 | 含义 |
---|---|
h | Hz |
q | Q-Factor |
o | octave |
s | slope |
k | kHz |
width, w
以width_type
为单位指定过滤器的带宽。
channels, c
指定要过滤的通道,默认情况下会过滤所有可用的通道。
26.34.1 命令行
此筛选器支持以下命令:
frequency, f
改变带通频率。 该命令的语法是:frequency
width_type,t
更改bandpass width_type
。 该命令的语法是:width_type
width, w
改变带通宽度。 该命令的语法是:width
26.35 bandreject
应用具有中心频率和(3dB-point
)带宽宽度的双极Butterworth
带阻滤波器。 滤波器以每倍频程6dB
(20dB per decade
)滚降。
过滤器接受以下选项:
frequency, f
设置滤波器的中心频率。 默认值为3000
。
width_type, t
设置方法以指定过滤器的带宽。
参数 | 解释 |
---|---|
h | Hz |
q | Q-Factor |
o | octave |
s | slope |
k | kHz |
width, w
以width_type
为单位指定过滤器的带宽。
channels, c
指定要过滤的通道,默认情况下会过滤所有可用的通道。
26.35.1 命令行
此筛选器支持以下命令:
frequency, f
改变频带反射频率。 该命令的语法是:frequency
width_type,t
更改bandreject width_type
。 该命令的语法是:width_type
width, w
更改bandreject
宽度。 该命令的语法是:width
26.36 bass
使用双极搁架滤波器提升或降低音频的低音(低频)频率,其响应类似于标准高保真音调控制的响应。 这也称为搁置均衡(EQ
)。
过滤器接受以下选项:
gain, g
增益为0 Hz
。 它的有用范围是大约-20
(用于a large cut
)到+20
(用于a large boost
)。 使用正增益时要小心clipping
。
frequency, f
设置滤波器的中心频率,因此可用于扩展或减小要增强或削减的频率范围。 默认值为100 Hz
。
width_type,t
设置方法以指定过滤器的带宽:
参数 | 解释 |
---|---|
h | Hz |
q | Q-Factor |
o | octave |
s | slope |
k | kHz |
width, w
确定过滤器的架子过渡有多陡峭。
channels, c
指定要过滤的通道,默认情况下会过滤所有可用的通道。
26.36.1 命令行
此筛选器支持以下命令:
frequency, f
改变低音频率。 该命令的语法是:frequency
width_type,t
改变低音width_type
。 该命令的语法是:width_type
width, w
改变低音宽度。 该命令的语法是:width
gain, g
改变低音增益。 该命令的语法是:gain
26.37 biquad
应用具有给定系数的双二阶IIR
滤波器。 其中b0,b1,b2
和a0,a1,a2
分别是分子和分母系数。 和通道,c
指定要过滤的通道,默认情况下,所有可用的通道都被过滤。
26.37.1 命令行
此筛选器支持以下命令:
‘a0’
‘a1’
‘a2’
‘b0’
‘b1’
‘b2’
更改biquad
参数。 该命令的语法是:value
26.38 bs2b
Bauer
立体声到双耳转换,改善了立体声音频记录的耳机收听。
要启用此过滤器的编译,需要使用--enable-libbs2b
配置FFmpeg
。
它接受以下参数:
profile
预定义crossfeed level
。
参数 | 解释 |
---|---|
default | 默认级别(fcut=700, feed=50)
|
cmoy | Chu Moy circuit (fcut=700, feed=60) |
jmeier | Jan Meier circuit (fcut=650, feed=95) |
fcut
切割频率(Hz)
。
feed
Feed
级别(Hz)
。
26.39 channelmap
将输入通道重新映射到新位置。
它接受以下参数:
map
将通道从输入映射到输出。 参数是一个'|'
分隔的映射列表,每个映射都以in_channel-out_channel
或in_channel
形式出现。 in_channel
可以是输入通道的名称(例如左前方的FL
)或输入通道布局中的索引。 out_channel
是输出通道布局中输出通道的名称或其索引。 如果没有给出out_channel
,那么它隐含地是一个索引,从零开始并为每个映射增加1。
channel_layout
输出流的通道布局。
如果不存在映射,则过滤器将隐式地将输入通道映射到输出通道,从而保留索引。
26.39.1 示例
-
例如,假设一个
5.1 +
缩混输入MOV
文件可以使用如下的命令行:ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
将从输入的下混通道创建标记为立体声的输出WAV
文件。
-
修复以
AAC
原生频道顺序不正确编码的5.1 WAV
:ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
26.40 channelsplit
将每个通道从输入音频流拆分为单独的输出流。
它接受以下参数:
channel_layout
输入流的通道布局。 默认为stereo
。
channels
描述要作为单独输出流提取的通道的通道布局或"all"
以将每个输入通道提取为单独的流。 默认为"all"
。
选择输入中不存在于通道布局中的通道将导致错误。
26.40.1 示例
-
例如,假设立体声输入
MP3
文件:ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
将创建一个输出Matroska
文件,其中包含两个音频流,一个仅包含左声道,另一个包含右声道。
-
将
5.1 WAV
文件拆分为每个通道文件:ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]' -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]' front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]' side_right.wav
-
仅从
5.1 WAV
文件中提取LFE
:ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]' -map '[LFE]' lfe.wav