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

26. 音频过滤器

配置FFmpeg构建时,可以使用--disable-filters禁用任何现有过滤器。 配置输出将显示构建中包含的音频过滤器。

以下是当前可用音频过滤器的说明。

26.1 acompressor

压缩器主要用于减小信号的动态范围。 特别是现代音乐大多以高比率压缩以改善整体响度。 这样做是为了让听众获得最高的关注,"fatten"声音,并为track带来更多的"power"。 如果信号被压缩得太多,之后可能听起来暗淡或"dead",或者它可能开始 "pump"(这可能是一种强大的效果,但也可以完全破坏track)。 正确的压缩是达到专业声音的关键,是混音和母带制作的高级艺术。 由于其复杂的设置,可能需要很长时间才能获得这种效果的正确感觉。

通过检测高于所选水平threshold(阈)值的体积并将其除以用ratio率设定的因子来完成压缩。因此,如果将阈值设置为-12dB并且信号达到-6dB,则比率为2:1将导致信号为-9dB。因为对信号的精确操纵会导致波形失真,所以可以随时间减小。这是通过设置“Attack”和“Release”来完成的。attack确定在发生任何减少之前信号必须超过阈值的时间长度,并且release设置信号必须降至阈值以下的时间以再次减少减少。比所选择的攻击时间更短的信号将保持不变。之后可以通过makeup设置来弥补信号的整体减少。因此,将信号的峰值压缩大约6dB并将化妆值提高到该水平会产生两倍于信号源的信号。为了在压缩中获得更柔和的进入,knee使硬边缘在所选分贝范围内的阈值处变平。

过滤器接受以下选项:

level_in

设置输入增益。默认值为1。范围介于0.01562564之间。

threshold

如果流的信号超过此水平,则会影响增益降低。默认情况下为0.125。范围介于0.000975631之间。

ratio

设置信号减少的比率。1:2表示如果电平比阈值高出4dB,则在降低后仅为2dB。默认值为2。范围介于120之间。

学习地址:音视频新手快速入门必备系列-FFmpeg+SDL播放器开发实现-学习视频教程-腾讯课堂

【文章福利】免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~  

attack

在增益降低开始之前信号必须升高到阈值以上的毫秒数。默认值为20。范围介于0.012000之间。

release

在减少之前信号必须降至阈值以下的毫秒数再次减少。默认值为250。范围介于0.019000之间。

makeup

设置处理后信号放大的数量。默认值为1。范围是164

knee

使尖锐的knee在阈值附近弯曲,以更轻柔地进入增益减少。默认值为2.82843。范围在18之间。

link

选择输入流的所有通道之间的平均水平或输入流的较大(最大)通道是否会影响减少。默认值是平均值。

detection

如果是峰值,则应该采取确切的信号;如果是均方根,则应该采用RMS。默认值是rms,大多数更平滑。

mix

输出中使用压缩信号的数量。默认值为1.范围介于01之间。

26.2 acontrast

简单的音频动态范围压缩/扩展滤波器。

过滤器接受以下选项:

contrast

设置对比度。 默认值为33。允许的范围介于0100之间。

26.3 acopy

将输入音频源不变地复制到output。 这主要用于测试目的。

26.4 acrossfade

将交叉淡入淡出从一个输入音频流应用到另一个输入音频流。 交叉淡入淡出在第一个流的末尾附近应用指定的持续时间。

过滤器接受以下选项:

nb_samples,ns

指定交叉渐变效果必须持续的样本数。 在交叉淡入淡出效果结束时,第一个输入音频将完全静音。 默认值为44100

duration, d

指定交叉淡入淡出效果的持续时间。 请参阅(ffmpeg-utils)接受语法的持续时间语法。 默认情况下,持续时间由nb_samples确定。 如果设置,则使用此选项而不是nb_samples

overlap, o

首先应该与第二个流开始流结束重叠。 默认值已启用。

curve1

设置第一个流的交叉淡入淡出过渡曲线。

curve2

设置第二个流的交叉淡入淡出过渡曲线。

有关可用曲线类型的说明,请参阅afade过滤器说明。

26.4.1 示例

  • 交叉淡入淡出从一个输入到另一个输入:

      ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
    
  • 从一个输入交叉淡入淡出但没有重叠:

      ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
    

26.5 acrusher

降低音频位分辨率。

该过滤器是具有增强功能的bit crusherbit crusher用于可听地减少采样音频信号的位数。这根本不会改变位深度,只会产生效果。比特深度减小的材料听起来更苛刻和"digital"。该滤波器甚至可以舍入到连续值而不是离散位深度。另外,它具有D/C偏移,这导致信号的下半部分和上半部分的不同压碎。抗锯齿设置能够产生 "softer" 的柔和声音。

该滤波器的另一个特征是对数模式。此设置从位之间的线性距离切换到对数位。结果是更加"natural"的发声crusher,例如它不会接收低信号。人耳具有对数感,因此这种crushing更令人愉悦。对数crushing也能够消除锯齿。

过滤器接受以下选项:

level_in

设置级别。

level_out

设置等级。

bits

设置位减少。

mix

设定混合量。

mode

可以是线性的:lin或对数的:log

dc

设置DC。

aa

设置抗锯齿。

samples

设置样品减少量。

lfo

启用LFO。 默认情况下禁用。

lforange

设置LFO范围。

lforate

设置LFO费率。

26.6 adelay

延迟一个或多个音频通道。

延迟通道中的样本充满了沉默。

过滤器接受以下选项:

delays

设置由|分隔的每个通道的延迟列表(以毫秒为单位)。 未使用的延迟将被默默忽略。 如果给定延迟的数量小于信道数,则所有剩余信道将不会被延迟。 如果要延迟确切的样本数,请将'S'附加到数字。

26.6.1 示例

将第一个通道延迟1.5秒,将第三个通道延迟0.5秒,并保持第二个通道(以及可能存在的任何其他通道)不变。

adelay=1500|0|500

将第二个通道延迟500个样本,将第三个通道延迟700个样本,并保持第一个通道(以及可能存在的任何其他通道)不变。

adelay=0|500S|700S

26.7 aecho

将回音应用于输入音频。

回声是反射声音,在谈话或喊叫时可以在山脉(有时是大型建筑物)中自然发生; 数字回声效果模拟此行为,通常用于帮助填写单个乐器或人声的声音。 原始信号和反射之间的时间差是延迟,反射信号的响度是衰减。 多个回波可能有不同的延迟和衰减。

接下来的参数的描述如下。

in_gain

设置反射信号的输入增益。 默认值为0.6

out_gain

设置反射信号的输出增益。 默认值为0.3

delays

设置原始信号和以"|"分隔的反射之间的时间间隔列表(以毫秒为单位)。 每个延迟的允许范围是(0 - 90000.0)。默认值是1000

decays

设置由"|"分隔的反射信号的响度列表。 每个衰减的允许范围是(0 - 1.0)。默认值是0.5

26.7.1 示例

  • 让它听起来好像有两倍的实际演奏乐器:

      aecho=0.8:0.88:60:0.4
    
  • 如果延迟非常短,那么它听起来像是一个播放音乐的(金属)机器人:

      aecho=0.8:0.88:6:0.4
    
  • 较长的延迟听起来像山区的露天音乐会:

      aecho=0.8:0.9:1000:0.3
    
  • 与上面相同,但还有一座山:

      aecho=0.8:0.9:1000|1800:0.3|0.25     
    

26.8 aemphasis

音频强调滤镜创建或恢复直接从LP或具有不同滤镜曲线的强调CD获取的材质。 例如。 为了将音乐存储在乙烯基上,必须首先通过滤波器改变信号以平衡该记录介质的缺点。 一旦播放了素材,就必须应用逆滤波器来恢复频率响应的失真。

过滤器接受以下选项:

level_in

设置输入增益。

level_out

设置输出增益。

mode

设置过滤模式。 用于恢复材料使用reproduction模式,否则使用production模式。 默认为reproduction模式。

type

设置过滤器类型。 Selects medium。 可以是如下所述中的一个:

类型 解释
col select Columbia
emi select EMI
bsi select BSI (78RPM)
riaa select RIAA
cd select Compact Disc (CD)
50fm select 50µs (FM)
75fm select 75µs (FM)
50kf select 50µs (FM-KF)
75kf select 75µs (FM-KF)

26.9 aeval

根据指定的表达式修改音频信号。

该过滤器接受一个或多个表达式(每个通道一个),它们被评估并且用于修改相应的音频信号。

它接受以下参数:

参数 含义
exprs 为每个单独的通道设置|分隔表达式列表。 如果输入通道的数量大于表达式的数量,则最后指定的表达式将用于其余输出通道。
channel_layout,c 设置输出通道布局。 如果未指定,则通道布局由表达式数指定。 如果设置为‘same’,则默认情况下将使用相同的输入通道布局

exprs中的每个表达式都可以包含以下常量和函数:

参数 含义
ch 当前表达式的通道号
n 评估样本的编号,从0开始
s 采样率
t 评估样品的时间以秒表示
nb_in_channels
nb_out_channels 输入和输出通道数
val(CH) 数字CH的输入通道的值

注意:此过滤器很慢。 为了加快处理速度,建议使用专用过滤器。

26.9.1 示例

  • 音量减半:

      aeval=val(ch)/2:c=same
    
  • 第二个通道的反相:

      aeval=val(0)|-val(1)
    

26.10 afade

将淡入/淡出效果应用于输入音频。

接下来的参数的描述如下。

type,t

指定效果类型:in表示淡入效果,out表示淡出效果。默认是淡入效果。

start_sample,ss

指定开始应用淡入淡出效果的开始样本的编号。默认值为0

nb_samples,ns

指定淡入淡出效果必须持续的样本数。在淡入效果结束时,输出音频将具有与输入音频相同的音量,在淡出过渡结束时输出音频将保持静音。默认值为44100

start_time,st

指定淡入淡出效果的开始时间。默认值为0。必须将值指定为持续时间;接受语法具体请参阅2.3持续时间。如果设置,则使用start_sample选项替代。

duration, d

指定淡入淡出效果的持续时间。具体的语法请参阅2.3持续时间。在淡入效果结束时,输出音频将具有与输入音频相同的音量,在淡出过渡结束时输出音频将保持静音。默认情况下,持续时间由nb_samples确定。如果设置,请使用nb_samples选项。

curve

设置淡入淡出过渡曲线。

它接受以下值:

取值 解释
tri 选择三角形,线性斜率(默认)
qsin 选择四分之一的正弦波
hsin 选择一半的正弦波
esin 选择指数正弦波
log 选择对数
ipar 选择倒置抛物线
qua 选择二次方
cub 选择立方体
squ 选择平方根
cbr 选择立方根
par 选择抛物线
exp 选择指数
iqsin 选择倒四分之一的正弦波
ihsin 选择倒半波的正弦波
dese 选择双指数座位
desi 选择双指数sigmoid

26.10.1 示例

  • 淡入前15秒的音频:

      afade=t=in:ss=0:d=15
    
  • 淡出900秒音频的最后25秒:

      afade=t=out:st=875:d=25

你可能感兴趣的:(音视频开发,程序员,编程,ffmpeg,音视频,android,c++,c语言)