FFplay文档解读-17-音频过滤器二
前言
Github地址:Github
简书地址:简书
专辑地址:FFplay专辑
26.11 afftfilt
将任意表达式应用于频域中的样本。
real
为由'|'分隔的每个单独通道设置频域实数表达式。 默认值为'1'。 如果输入通道的数量大于表达式的数量,则最后指定的表达式将用于其余输出通道。
imag
设置由'|'分隔的每个单独通道的频域虚构表达式。 如果未设置,则使用实际选项。
real和imag中的每个表达式都可以包含以下常量:
| 参数 | 解释 |
|---|---|
| sr | 采样率 |
| b | 当前频率bin号 |
| nb | 可用垃圾箱数量 |
| ch | 当前表达式的通道号 |
| chs | 频道数量 |
| pts | 当前帧数 |
win_size
设置窗口大小。
它接受以下值:
w16
w32
w64
w128
w256
w512
w1024
w2048
w4096
w8192
w16384
w32768
w65536
默认值是:w4096
win_func
设置窗口功能。默认是hann。
overlap
设置窗口重叠。 如果设置为1,将选择所选窗口功能的建议重叠。 默认值为0.75。
26.11.1 示例
-
只留下音频中的低频:
afftfilt="1-clip((b/nb)*b,0,1)"
26.12 afir
应用任意频率脉冲响应滤波器。
该滤波器设计用于应用长达30秒的长FIR滤波器。
它可以用作数字交叉滤波器,房间均衡,串扰消除,波场合成,可听化,ambiophonics和ambisonics的组件。
该滤波器使用第二流作为FIR系数。 如果第二个流保持单个信道,则它将用于第一个流中的所有输入信道,否则第二个流中的信道数必须与第一个流中的信道数相同。
它接受以下参数:
dry
设定dry增益。 这设置了输入增益。
wet
设定wet增益。 这设定了最终输出增益。
length
设置脉冲响应滤波器长度。 默认值为1,表示处理整个IR。
again
启用应用IR功率测量的增益。
26.12.1 示例
使用单声道IR文件作为第二个输入应用混响流,使用ffmpeg完成命令:
ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
26.13 aformat
设置输入音频的输出格式约束。 该框架将协商最合适的格式,以尽量减少转换。
它接受以下参数:
sample_fmts
所请求的样本格式的'|'分隔列表。
sample_rates
请求采样率的'|'分隔列表。
channel_layouts
所请求的通道布局的'|'分隔列表。
有关所需语法,请参阅channel布局语法。
如果省略参数,则允许所有值。
强制输出为无符号8位或带符号的16位立体声。
aformat=sample_fmts=u8|s16:channel_layouts=stereo
26.14 agate
A gate主要用于减少信号的下部分。这种信号处理减少了有用信号之间的干扰噪声。
通过检测低于所选水平阈值的体积并将其除以用比率设定的因子来完成门控。本底噪声通过范围设定。因为对信号的精确操纵会导致波形失真,所以可以随时间推移降低。这是通过设置攻击和释放来完成的。
攻击确定在发生任何减少之前信号必须下降到阈值以下的时间,并且释放设置信号必须超过阈值的时间以再次减少减少。比所选择的攻击时间更短的信号将保持不变。
level_in
在过滤之前设置输入级别。默认值为1。允许范围为0.015625到64。
range
设置信号低于阈值时的增益降低水平。默认值为0.06125。允许范围为0到1。
threshold
如果信号超过此水平,则释放增益减少。默认值为0.125。允许范围为0到1。
ratio
设置信号减少的比率。默认值为2。允许范围为1到9000。
attack
在增益减少停止之前,信号必须超过阈值的毫秒数。默认值为20毫秒。允许范围为0.01至9000。
release
在减少再次增加之前信号必须降至阈值以下的毫秒数。默认值为250毫秒。允许范围为0.01至9000。
makeup
设定处理后的信号放大量。默认值为1。允许范围为1到64。
knee
使尖锐的膝盖在阈值附近弯曲,以更轻柔地进入增益减少。默认值为2.828427125。允许范围为1到8。
detection
选择是否应该采取确切的信号进行检测,或选择rms。默认值是rms。可以是peak或rms。
link
选择所有通道之间的平均水平或更大的通道是否会影响减少。默认值是average。可以是average还是maximum。
26.15 aiir
应用任意无限脉冲响应滤波器。
它接受以下参数:
z
设置分子/零系数。
p
设置分母/极点系数。
k
设置渠道收益。
dry_gain
设置输入增益。
wet_gain
设置输出增益。
f
设置系数格式。
| 格式 | 解释 |
|---|---|
| tf | 转换功能 |
| zp | Z平面零点/极点,笛卡儿(默认) |
| pr | Z平面零点/极点,极弧度 |
| pd | Z平面零点/极点,极度 |
r
设置一种处理。 可以是d - direct或s - serial cascading。 默认是s。
e
设置过滤精度。
| 精度 | 解释 |
|---|---|
| dbl | 双精度浮点(默认) |
| flt | 单精度浮点数 |
| 123-132 |
32位整数 |
| I16 |
16位整数 |
tf格式的系数由空格分隔并按升序排列。
zp格式的系数用空格分隔,系数的顺序无关紧要。 zp格式的系数是具有i虚数单位的复数。
可以为每个通道提供不同的系数和增益,在这种情况下使用'|'来分离系数或增益。 最后提供的系数将用于所有剩余的通道。
26.15.1 示例
在5000Hz的环境下应用2极椭圆形凹口,48000 Hz采样率:
aiir=k=1:z=7.957584807809675810E-1 -2.575128568908332300 3.674839853930788710 -2.57512875289799137 7.957586296317130880E-1:p=1 -2.86950072432325953 3.63022088054647218 -2.28075678147272232 6.361362326477423500E-1:f=tf:r=d
与上面相同但是采用zp格式:
aiir=k=0.79575848078096756:z=0.80918701+0.58773007i 0.80918701-0.58773007i 0.80884700+0.58784055i 0.80884700-0.58784055i:p=0.63892345+0.59951235i 0.63892345-0.59951235i 0.79582691+0.44198673i 0.79582691-0.44198673i:f=zp:r=s
26.16 alimiter
限制器可防止输入信号超过所需阈值。此限制器使用先行技术来防止信号失真。这意味着信号处理后会有一个小延迟。请记住,它产生的延迟是您设置的攻击时间。
过滤器接受以下选项:
level_in
设置输入增益。默认值为1。
level_out
设置输出增益。默认值为1。
limit
不要让高于此水平的信号通过限制器。默认值为1。
attack
限制器将在这段时间内以毫秒为单位达到衰减水平。默认值为5毫秒。
release
在这个毫秒数内从限制到衰减1.0回来。默认值为50毫秒。
asc
当总是需要减少增益时,ASC``负责释放到平均减少水平而不是在释放时间内减少0`。
asc_level
选择ASC对发布时间的影响程度,0表示发布时间几乎没有变化,而1表示发布时间较长。
asc_level
自动电平输出信号。默认值已启用。如果启用,则将音频标准化为0dB。
根据拾取的设置,建议在应用此滤镜之前使用aresample对输入进行2x或4x上采样。
26.17 allpass
应用具有中心频率(Hz)频率和滤波器宽度宽度的双极全通滤波器。 全通滤波器将音频的频率改变为相位关系,而不改变其频率与幅度的关系。
过滤器接受以下选项:
frequency, f
设置频率,单位为Hz。
width_type,t
设置方法以指定过滤器的带宽。
| 参数 | 解释 |
|---|---|
| h | 赫兹 |
| q | Q-因子 |
| o | 八度 |
| s | 坡 |
| k | 千赫 |
width, w
以width_type为单位指定过滤器的带宽。
channels, c
指定要过滤的通道,默认情况下会过滤所有可用的通道。
26.17.1 命令
此筛选器支持以下命令:
frequency, f
改变全通频率。 该命令的语法是:frequency
width_type,t
更改allpass width_type。 该命令的语法是:width_type
width, w
改变全通宽度。 该命令的语法是:width
26.18 aloop
循环音频样本。
过滤器接受以下选项:
loop
设置循环次数。 将此值设置为-1将导致无限循环。 默认值为0。
size
设置最大样本数。 默认值为0。
start
设置第一个循环样本。 默认值为0。
26.19 amerge
将两个或多个音频流合并为单个多通道流。
过滤器接受以下选项:
inputs
设置输入数量。默认值为2。
如果输入的通道布局是不相交的,因此是兼容的,则输出的通道布局将相应地设置,并且必要时将重新排序通道。如果输入的通道布局不是不相交的,则输出将具有第一个输入的所有通道,然后是第二个输入的所有通道,按顺序,输出的通道布局将是对应于频道总数。
例如,如果第一个输入是2.1(FL + FR + LF),第二个输入是FC + BL + BR,那么输出将是5.1,通道按以下顺序排列:a1,a2,b1, a3,b2,b3(a1是第一个输入的第一个通道,b1是第二个输入的第一个通道)。
另一方面,如果两个输入都是立体声,输出通道将按默认顺序:a1,a2,b1,b2,并且通道布局将任意设置为4.0,这可能是也可能不是预期值。
所有输入必须具有相同的采样率和格式。
如果输入的持续时间不同,则输出将以最短的时间停止。
26.19.1 示例
-
将两个单声道文件合并为立体声流:
amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge -
在
input.mkv中假设1个视频流和6个音频流进行多次合并:ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
26.20 amix
将多个音频输入混合到一个输出中。
请注意,此过滤器仅支持浮点样本(amerge和pan音频过滤器支持多种格式)。 如果amix输入具有整数样本,则将自动插入aresample以执行到float样本的转换。
例如:
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
将3个输入音频流混合到单个输出,其持续时间与第一个输入相同,并且丢失转换时间为3秒。
它接受以下参数:
inputs
输入数量。 如果未指定,则默认为2。
duration
如何确定流的结尾。
| 模式 | 解释 |
|---|---|
| longest | 最长输入的持续时间。 (默认) |
| shortest | 最短输入的持续时间。 |
| first | 第一次输入的持续时间。 |
dropout_transition
输入流结束时卷重新规范化的转换时间(以秒为单位)。 默认值为2秒。
weights
将每个输入音频流的权重指定为序列。 每个重量由空间分隔。 默认情况下,所有输入的权重相同。