34 音頻濾鏡
當你配置編譯FFmpeg時,先采用--disable-filters可以禁止所有的濾鏡,然后顯式配置想要支持的濾鏡。
下面是當前可用的音頻濾鏡
adelay
延遲一個或者多個音頻通道
它接受如下選項:
-
delays
參數是以
|分隔的列表字符串,分別用於指明對應各個通道延遲的微秒(milliseconds)數。應提供至少一個大於0的延遲。未使用的延遲將被靜默忽略。如果延遲值數量小於通道數量,則剩余通道不會被延遲。
adelay例子
-
第一通道延遲1.5秒,第三通道0.5秒(其它通道均不延遲變化)
adelay=1500|0|500
aecho
重復應用於音頻輸入(回聲效果)濾鏡
回聲反射聲音,可以自然發生在山區大型建築(有時)談話時,或者大叫時,數字回聲效果模擬這種行為,通常用來幫助填補一個樂器或聲音的(回聲)。原始信號和發射信號的時差就是delay(延遲),而反射信號的響度是decay(衰減)。多個回聲可以有不同的延遲和衰減。
要描述一個回聲效果需要如下的參數值(注意下面的參數之間用:分隔):
-
in_gain
設置輸入獲得的反射信號強度,默認0.6.
-
out_gain
設置輸出增加反射信號強度,默認0.3.
-
delays
一個由
|分隔原始信號和反射作用的指代延遲時間的字符串列表,單位是微秒(milliseconds)。每個延遲允許范圍(0-90000.0),默認為1000 -
decays
設置一個由
|分隔的反映信號響度衰減值的列表,每個衰減值范圍是(0-1.0),默認為0.5.
aecho例子
-
讓一個聲音聽起來像兩倍
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
aeval
根據指定的表達式修改(改變、變化)一個音頻信號
這個濾鏡接受一個或者多個表達式(對每個通道),這些表達式計算用於相應的音頻信號。
它接受下面的參數:
-
exprs
設置一個用
|分隔的對應於各個通道的表達式。如果輸入通道數量比表達式數量大,則最后指定的表達式用於其余通道 -
channel_layout, c
設置輸出通道布局。如果不指定,通道布局采用通道布局數值表達式。如果設置為
same則采用輸入通道相同的布局(這是默認值)
幀各通道的計算表達式中,下面的項目被允許。:
-
ch
當前表達式對應通道索引 expression
-
n
評估樣本數量,從0開始
-
s
采樣率
-
t
一秒內采樣點數量。
nb_in_channels
nb_out_channels輸入和輸出通道索引
val(CH)the value of input channel with number CH
注意這個濾鏡比較慢,要快速處理你可能需要dedicated濾鏡
aeval例子
-
一半音量
aeval=val(ch)/2:c=same
-
轉化相位的第二個通道::
aeval=val(0)|-val(1)
afade
對輸入音頻應用淡入淡出效果
下面是跟上來的濾鏡參數:
-
type, t
指定濾鏡效果,可以是
fade-in,或者fade-out -
start_sample, ss
指定的數量開始樣品開始應用褪色的效果。默認是0S
-
nb_samples, ns
指定實現淡入/淡出效果的樣品數量,最終淡入效果輸出的音頻音量同於輸入,而淡出將靜音。默認音頻采樣率為44100。
-
start_time, st
指定淡入/淡出效果開始的時間,默認為0。這個值必須被以持續時間語法來描述。它可以用來替代
start_sample選項。 -
duration, d
指定淡化效果持續時間。以持續時間語法來描述。在效果的最后,淡入使得音量同於輸入音頻,淡出則靜音。默認持續時間由
nb_samples定義。 這里設置了就替代了nb_samples -
curve
設置曲線過渡衰減,接受下面的值:
tri
選擇三角形,線性斜坡(默認)qsin
選擇正弦波hsin
選擇正弦波的一半esin
選擇指數正弦log
選擇對數ipar
選擇倒拋物線qua
選擇二次cub
選擇立方squ
選擇平方根cbr
選擇立方根par
選擇拋物線exp
選擇指數iqsin
選擇正弦波反季ihsin
選擇倒一半的正弦波dese
選擇雙指數插值desi
選擇雙指數S彎曲
afade例子
-
15秒的一個音頻淡入
afade=t=in:ss=0:d=15
-
25秒的音頻淡出
afade=t=out:st=875:d=25
aformat
讓輸入音頻約束成為指定格式。該框架會采用最合適(少)的格式轉換
它接受下面的參數:
-
sample_fmts
一個用
|分隔的列表,列出了采樣格式 -
sample_rates
一個用
|分隔的列表,列出了采樣率 -
channel_layouts
一個用
|分隔的列表指定通道布局.參考通道布局了解通道布局相關語法。
如果一個參數被省略,所有的值都是允許的。
強制輸出為8位 或者16位 立體聲
aformat=sample_fmts=u8|s16:channel_layouts=stereo
allpass
應用一個兩極(two-pole)全通(all-pass)濾波器的中心頻率(Hz)的frequency,和filter-width值width。一個allpass濾鏡可以改變音頻的頻率相位關系而不改變其頻率振幅關系。(可以實現移相)
濾鏡接受下面的選項:
-
frequency, f
設置頻率,單位Hz.
-
width_type
設置帶寬濾波器的帶寬單位,有下面的類型
h
Hzq
Q-Factoro
octave——8度 音階s
slope -
width, w
指定一個過濾器的帶寬width_type單位
amerge
合並兩個或兩個以上的音頻流到一個多通道流
濾鏡接受下面的選項:
-
inputs
設置輸入數量,默認為2
如果輸入的通道布局是不相交的,因此可兼容,輸出將設置相應的通道布局和渠道,並在必要時重新排序。如果輸入的通道布局是不可分離的,則輸出將會是第一個輸入的所有通道,然后第二個輸入的所有通道,在這種順序下,輸出的通道布局將默認通道數設為總數。
例如:如果第一個輸入是2.1(FL+FR+LF)和第二個輸入為FC+BL+BR,則輸出是5.1通道布局,並且按:a1,a2,b1,a3,b2,b3設置輸出通道布局(這里a1是第一個輸入的第一個通道FL,b1是第二個輸入的第一個通道FC)
在另外的應用中,如果兩個輸入都是立體聲,則輸出會默認為:a1,a2,b1,b2,即輸出流顯示為一個4通道音頻流,這可能是一個非預期的值。
所有的輸入必須有相同的采樣率和格式。
如果輸入沒有相同的持續時間,輸出將在最短時間停止。
amerge例子
-
合並兩個單聲道為立體聲
amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
-
合並多個到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
amix
混合多個音頻輸入到單路音頻輸出(疊加混合音頻,不同於前面的amerge)
注意這個濾鏡只支持浮動采樣(amerge和pan音頻濾鏡支持很多格式)。如果amix濾鏡輸入有一個整數采樣,則aresample濾鏡會自動插入轉換成浮動采樣。
例如:
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_trnsition
過渡時間,單位秒,指一個輸入流結束時音量從正常到無聲漸止效果,默認為2秒
anull
輸入音頻源不變的到輸出
apad
在一個音頻流的末尾添加無聲。
它可以用來同ffmpeg -shortest一起把最短的音頻流延長到視頻相同長度。
選項介紹見下:
-
packet_size
設置墊的包大小字節,默認4096.
-
pad_len
設置要添加到最后的采樣點數量(實為時間的一種表達,采樣率一定則采樣點個數決定了持續時間,這里只設置了差值)。值達到后終止。它與
whole_len互斥 -
whole_len
設置最小的音頻流總輸出樣本點數(就是直接設置總持續時間的一種方式),如果這個值大於輸入音頻數,則墊上差值到最后。它與
pad_len互斥
如果既不設置pad_len也不設置whole_len,則接在后面的靜音將一直持續。
apad例子
-
添加1024個靜音樣本點到輸入末尾
apad=pad_len=1024
-
讓輸出至少有10000個樣本點,不足就添加靜音樣本點到末尾
apad=whole_len=10000
-
利用ffmpeg添加靜音樣本點,讓視頻和音頻有同樣長的持續時間(以視頻時間為准的)。
ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
aphaser
添加一個移相到輸入音頻
移相器濾鏡創建一系列的波峰和波谷的頻譜。波峰和波谷的位置調制,這樣他們會隨着時間變化,建立一個全面的效果。
可接受參數介紹見下:
-
in_gain
設置輸入增益,默認 0.4.
-
out_gain
設置輸出增益,默認0.74
-
delay
設置延遲,單位微秒,默認3.0.
-
decay
設置衰減權重,默認0.4.
-
speed
設置調制速度,單位Hz,默認 0.5.
-
type
設置調制類型,默認 triangular.
它接受下面的值:
‘triangular, t’
‘sinusoidal, s’
aresample
對輸入音頻按指定的參數重采樣,使用了libswresample庫,如果沒有特殊設定,將自動在輸入和輸出設置間轉換。
這個濾鏡還可以用於拉伸/壓縮音頻數據,使其匹配時間戳,或者通過注入靜音/剪切來匹配時間戳
濾鏡接受的語法:[sample_rate:]resampler_options,這里sample_rate是新采樣率,resampler_options是一個由:分隔的key=value選項參數值對列表。參考ffmpeg重采樣手冊完整了解支持的選項。
aresample例子
-
重采樣為44100Hz:
aresample=44100
-
拉伸/壓縮采樣來適應時間戳,最大1000個樣本點每秒:
aresample=async=1000
asetnsamples
設置每個輸出音頻幀中樣本點個數
除了最后一個輸出包括有包含不同數量的樣本點外,這個濾鏡使得持續中的每個數據包中包含一致數量的樣本點。
濾鏡接受下面的選項:
-
nb_out_samples, n
設置每個輸出音頻幀中樣本點個數,它替代作為每個通道樣本點個數,默認1024
-
pad, p
如果設置為1,則濾鏡在最后一個音頻幀中補0填充,這樣所有幀都有一樣的樣本點個數。默認為1
例如,設置每幀樣本點個數為1234,且禁止最后幀補齊
asetnsamples=n=1234:p=0
asetrate
重新設置采樣率而不改變PCM數據。這將導致速度和音調的變化。
濾鏡接受下面的選項:
-
sample_rate, r
設置輸出的采樣率,默認為44100Hz
ashowinfo
對每個輸入流音頻幀顯示其所含各種信息。輸入音頻不被改變
信息由一個序列的鍵值對構成, 鍵值對的格式為 key:value
下面的信息將被顯示(作為鍵值對的鍵名):
-
n
當前的輸入(音頻)幀序號,從0開始計數
-
pts
輸入幀的時間戳,按時基計數,時基依賴於濾鏡輸入,通常為
1/sample_rate -
pts_time
輸入幀時間戳按秒的表示
-
pos
輸入幀中輸入流中的偏移(文件讀寫指針位置), -1表示該信息不可用 和/或者 無意義 (例如合成音頻)
-
fmt
采樣格式
-
chlayout
通道布局
-
rate
音頻幀的采樣率
-
nb_samples
每幀中(每個通道)采樣點數
-
checksum
音頻數據Adler-32校驗和(以十六進制數據形式輸出) ,對於連續音頻數據,數據被看作是都連接在一起的。
-
plane_checksums
一個Adler-32校驗和列表,對應於每個數據塊
astats
顯示音頻通道的時域統計信息。統計計算和顯示每個音頻通道,值適合情況下還提供整體圖。
它接受下面的選項:
-
length
按秒給出的小窗口長(指統計動態移動窗),用於RMS測量波峰和波谷。默認為0.05(50微秒),允許值范圍為:[0.1-10]
每個顯示用選項的介紹見下A:
-
DC offset
從0振幅位移
-
Min level
最小采樣點 水平
-
Max level
最大采樣點 水平
-
Peak level dB
-
RMS level dB
標准的峰值和有效值測量,單位dBFS
-
RMS peak dB
-
RMS trough dB
在短窗口中波峰和波谷RMS值水平測量
-
Crest factor
標准比率RMS的峰值水平 (注意不是dB值了).
-
Flat factor
平整度(即連續樣本具有相同值)信號的峰值水平(即最小水平或最大級別)。
-
Peak count
計數多次(而不是樣品的數量),信號達到最小水平或最大水平
astreamsync
將兩個音頻流控制的發到緩沖區
濾鏡接受下面的選項:
-
expr, e
設置一個用於判斷哪個流被送出的表達式。如果結果為負則第一個流被轉發,否則如果為非負則第二個流被轉發。表達式中允許下面的變量:
b1 b2
分別指代緩沖區中每個輸入音頻流到目前為止轉發數量s1 s2
到目前為止,已經轉發的每個流的采樣點數量t1 t2
當前時間每個流的時間戳 stream默認表達式為
t1-t2, 它意味着把時間戳小的流進行轉發
astreamsync例子
壓力測試amerge通過隨機發送給緩沖區作為有錯誤的輸入,同時避免太多同步失鎖:
amovie=file.ogg [a] ; amovie=file.mp3 [b] ;
[a] [b] astreamsync=(2*random(1))-1+tanh(5*(t1-t2)) [a2] [b2] ;
[a2] [b2] amerge
asyncts
通過需要 壓縮/拉伸 和/或 采樣點/填補靜音 來讓音頻數據和時間戳同步。
這個濾鏡不默認編譯,請使用aresample來壓縮/拉伸。
它接受下面的參數:
-
compensate
若允許則通過拉伸/壓縮來讓數據匹配時間戳。默認禁止。當禁止時數據對時間戳將以靜音補齊
-
min_delta
觸發數據丟棄/補齊的 時間戳與音頻數據最小差異(按秒為單位)默認為0.1。如果默認值還是不完美同步,可以嘗試設置為0
-
max_comp
當
compensate=1時,每秒最大補齊樣本點數,默認為500. -
first_pts
這時一個時基單位(其實設置在前面補齊/去除 時間),第一個PTS為 1/sample_rate, 它允許了在開始補齊/去除 的時間量。默認情況下, 沒有假定一個,所有沒有補齊/調制。 例如 要讓一個音頻和另外的視頻同步,可能需要在前面加上/或者減去 一些樣本點
atempo
調整音頻節奏(變奏)
濾鏡接受1個參數,表示音頻節奏。如果不知道,則默認為1.0,表示不變,參數值范圍為[0.5,2.0]
atempo例子
-
減慢為80%
atempo=0.8
-
加快為125%
atempo=1.25
atrim
建設連續輸入中的部分作為輸出。
接受下面的參數:
-
start
以秒為單位的開始時間戳。即所指時間樣本點將作為輸出的第一個樣本點
-
end
以秒為單位的結束時間戳。即所指時間前最后一個樣本點將作為輸出的最后樣本點,其所指樣本點及其后的均被丟棄。
-
start_pts
類似
start,除了它的不是以秒為單位 -
end_pts
類似
end, 除了它不是一秒為單位 -
duration
輸出的持續時間
-
start_sample
要輸出的第一個樣本點序號
-
end_sample
要丟棄的第一個樣本點序號,(其前的最后一個樣本點是輸出的最后一個樣本點)
其中start, end和duration采樣持續時間格式描述,參考相關章節以了解詳情。
注意前面的start/end和duration是看幀的時間戳,而有_sample的選項則只是簡單的對傳入數據的樣本點計數。所有如start/end_pts和start/end_sample會造成不同的結果(當時間戳不准確、或從0開始)。還要注意這個濾鏡並不修改時間戳。如果你想讓輸出時間從0開始,則在其后插入atrim濾鏡
如果同時有多個start或end選項被設置,濾鏡嘗試(貪婪算法)保留盡量多的樣本點作為輸出(即start和end差最大的)。如果想保留多個塊,需要連接多個atrim濾鏡來應用(多個次輸入源,接atrim后再連接起來)
默認所有輸入被保留。所有它可被配置為保留結束前的一切。
例子:
-
丟棄指定時間外的輸入:
ffmpeg -i INPUT -af atrim=60:120
-
僅保留開始的1000幀
ffmpeg -i INPUT -af atrim=end_sample=1000
bandpass
應用一個通過中心點頻率frequency定義的兩極Butterworth(巴特沃斯)帶通濾波器,其有3dB的帶寬。csg選項指定一個常數作為默認增益(峰值增益 Q ,默認值為0)。濾鏡到期后每個8分音度有6dB的衰減。
濾鏡接受下面的選項:
-
frequency, f
設置濾鏡的中心點頻率,默認3000.
-
csg
設置增益常數,若想增益倍值為1(不變化),則值默認為0。
-
width_type
設置指定帶通濾波的類型:
h
Hzq
Q-Factoro
octave-8分音度s
slope-斜率 -
width, w
設置帶通濾波帶寬(單位為
width_type)
bandreject
應用一個通過中心點頻率frequency定義的兩極Butterworth(巴特沃斯)帶通濾波器,其有單側3dB的帶寬。濾鏡到期后每個8分音度有6dB的衰減。
-
frequency, f
設置濾鏡的中心點頻率,默認3000.
-
width_type
設置指定帶通濾波的類型:
h
Hzo
octave-8分音度s
slope-斜率 -
width, w
設置帶通濾波帶寬(單位為
width_type)
bass
使用雙刀擱置濾波器增加或減少低音(低)音頻的頻率響應,類似於一個標准的高保真的音控。這也被稱為擱置平衡(EQ)。
濾鏡接受下面選項:
-
gain, g
設置在0Hz的增益,其可用的范圍約為-20(大振幅)+20。要合適的值以防被削波(振幅過大超出說了樣本格式允許值范圍就削波)
-
frequency, f
設置濾鏡的中心點頻率,默認100 Hz.
-
width_type
設置指定帶通濾波的類型:
h
Hzo
octave-8分音度s
slope-斜率 -
width, w
設置帶通濾波帶寬(單位為
width_type)
biquad
應用一個 biquad IIR(無限沖激響應)濾鏡,它有b0、b1、b2和a0、a1、a3 分別作為分子和分母。
bs2b
Bauer(鮑爾)立體聲雙聲道的轉換,使耳機聽立體聲音頻記錄
它接受下面的參數:
-
profile
預定義橫向進給水平
default
默認水平 (fcut=700, feed=50).cmoy
Chu Moy circuit (fcut=700, feed=60).jmeier
Jan Meier circuit (fcut=650, feed=95). -
fcut
截至頻率,單位Hz
-
feed
進給水平,單位Hz
channelmap
重新映射輸入通道
它接受下面的參數:
-
channel_layout
輸出流通道布局
-
map
從輸入到輸出的通道映射。參數值是一個由
|分隔的映射關系描述列表。每個為in_channel-out_channel或者in_channel格式。in_channel可以用於輸入通道名稱(例如FL表示左前)或者在輸入通道中的索引數。out_channel可以用輸出通道名稱或者索引數。如果out_channel被省略,則從0開始遞增映射每個輸出通道
如果沒有設置map,濾鏡將隱式映射,保留所指(通道布局中對應通道)
例如,要把一個5.1 聲道的MOV文件下變換
ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
則將創建一個輸出WAV文件,其只有2個聲道(立體聲)。
又如要修復一個5.1聲道AAC編碼中不當的通道順序
ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:channel_layout=5.1' out.wav
channelsplit
把輸入音頻流的每個通道分開作為多個輸出流
它接受下面的參數:
-
channel_layout
指定輸入通道布局,默認為 "stereo"
例如從輸入MP3文件中分離立體聲
ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
會創建一個包含2個音頻流的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
chorus
給聲音添加合唱效果
可以讓獨唱變得像合唱,但也可以用於儀表。
合唱與回聲效應都有短延遲,但是回波延遲是常數,合唱則采用不同的正弦或三角調制。調制深度范圍定義了調制延遲(播放之前或之后的延遲)。因此延遲的聲音聽起來較慢或更快,這是原來周圍的延遲調整聲音,像是有一個與合唱整體略微差異。
它接受下面的參數(每個參數項如果有多個可能值用|分隔):
-
in_gain
設置輸入增益,默認0.4.
-
out_gain
設置輸出增益,默認0.4.
-
delays
設置延遲,延遲通常在40ms - 60ms
-
decays
設置衰減
-
speeds
設置速度
-
depths
設置深度
chorus例子
-
一個延遲(二人合唱效果):
chorus=0.7:0.9:55:0.4:0.25:2
-
2個延遲(三人合唱效果):
chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
-
3個延遲(四人及更多合唱效果):
chorus=0.5:0.9:50|60|40:0.4|0.32|0.3:0.25|0.4|0.3:2|2.3|1.3
compand
音頻壓縮或擴展的動態范圍(動態壓縮)
它接受下面的參數(參數值有多個時用|分隔,各個參數間用:分隔):
-
attacks
-
decays
一個以秒計時的單通道輸入信號計量瞬時水平平均值的計算窗口寬度列表。
attacks用於指示增加,decays用於指示衰減。對於大多數情況,增強時間(響應音頻聲)應該比衰減時間短,因為人類的耳朵感覺中,突然大聲的音頻錄音比突然減弱更敏感。典型的對增強采用0.3秒,對衰減采樣0.8秒。 -
points
一個要進行傳輸的點的列表,以dB指定相對於最大可能信號的振幅。每個關鍵節點由下面的語法描述:
x0/y0|x1/y1|x2/y2|....或者x0/y0 x1/y1 x2/y2 ....即由|或者空格分隔的列表。所有的輸入值(頻點)必須按遞增排序(傳遞函數——放大倍數,不需要單調遞增),點值
0/0表示可能覆蓋(對應0/輸出的按dB值增益)。典型值有-70/-70|-60/-20 -
soft-knee
設置對所有關節點的曲線半徑,默認為 0.01
-
gain
以dB為單位設置附加增益,對應於所有設置為需要獲得傳輸的點。這允許調整整體增益,默認為0
-
volume
以dB為單位設置初始化音量,其作為開始是每個通道的假設值,即允許用戶提供一個名義上的初始值。例如一個非常大的增益並不適用於初始信號在開始運作時有沒有壓縮。一個典型的表示最初十分安靜的值是-90dB,默認為 0.
-
delay
以秒為單位設置延遲。立即輸入音頻分析,但音頻延遲之前美聯儲音量調節器。指定一個延遲約等於增強/衰減時間允許濾鏡有效地預測而不是被動的模式運作。它默認為0。
compand例子
-
為音樂適合在嘈雜環境中聽時讓音樂更安靜和響亮:
compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
另外的例子是耳語和爆炸部分音頻:
compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
-
一個噪聲門,對於噪聲對於音頻有較低水平信號:
compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
-
另外一個噪聲門, 這次噪聲對於音頻有更高水平信號。this time for when the noise is at a higher level than the signal (使它在某些方面,類似於壓制):
compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
dcshift
將直流轉換應用到音頻。
這可以有助於消除直流偏置(可能由硬件問題引起的記錄鏈)的音頻。直流偏置的影響是減少空間,因此體積。astats濾鏡可以用來確定一個信號直流偏移。
-
shift
設置直流偏置,允許值為[-1, 1].它疊加到音頻上
-
limitergain
可選,它應該有一個遠低於1的值(例如 0.05 或0.02)用來防止裁剪。
earwax
讓聲音更容易在耳機聽
這個為44.1kHz立體聲(即CD音頻格式)添加cues(線索)。讓聲音聽起來像離開了耳機,是在揚聲器前面(標准應該播放的環境)。
它從SoX移植來。
equalizer
應用一個兩極平衡(EQ)峰值濾鏡。通過這個濾鏡,信號電平值在選定的頻率可以增強或者衰減(不想bandpass和bandreject濾鏡),而其它頻率不變。
為了產生復雜的平衡曲線,這個過濾器可以被使用幾次,每一個都有不同的中心頻率。
濾鏡接受如下選項:
-
frequency, f
設置中心頻點,單位 Hz.
-
width_type
設置帶通濾波寬度定義類型
h
Hzq
Q-Factoro
octaves
slope -
width, w
設置帶通濾波寬度,其關聯
width_type -
gain, g
設置對應增益,單位dB
equalizer例子
-
1000 Hz 增加為10dB,帶寬200HZ
equalizer=f=1000:width_type=h:width=200:g=-10
-
在1000Hz處增加為2dB,帶寬Q 1,在100Hz處增加為5dB,帶寬Q2:
equalizer=f=1000:width_type=q:width=1:g=2,equalizer=f=100:width_type=q:width=2:g=-5
flanger
為音頻增加翻邊效果
濾鏡接受下面的選項:
-
delay
以微秒為單位設置延遲,范圍0-30,默認為0
-
depth
以微秒為單位設置swep延遲,范圍0-10,默認2
-
regen
設置再生百分比(延遲信號反饋),范圍-95-95,默認0
-
width
設置的延遲信號與原始混合比例。從0到100不等。默認值是71。
-
speed
設置每秒掃描(Hz),范圍0.1-10,默認0.5
-
shape
設置波形,可能值為
triangular或者sinusoidal,默認sinusoidal -
phase
對多個通道設置波形轉換百分比,范圍0-100,默認25
-
interp
設置延遲線內插方法,可能值為
linear或quadratic,默認linear
highpass
指定頻率3dB的高通濾波器。這個濾波器可以是單極或者雙極(默認),濾波器每極有6dB倍頻(每極10倍頻是20dB)
濾鏡接受下面選項:
-
frequency, f
設置頻點,默認3000.
-
poles, p
設置極數,默認2
-
width_type
設置帶寬計算模式.
h
Hzq
Q-Factoro
octaves
slope -
width, w
設置帶寬,其根據
width_type計數,僅對雙極濾鏡,有0.707q的.巴特沃斯響應
join
把多個輸入流連接成一個多通道流
它接受下面參數:
-
inputs
輸入流數,默認2
-
channel_layout
通道布局,默認
stereo -
map
從輸入流映射通道,參數是'|'分隔的字符串。每個
input_idx.in_channel-out_channel都是映射自輸入流。input_idx是0起始的輸入了流索引。stream._in_chnnel設置輸出流的標識,(例如:FL對應於左前退),其選定需要更多的音視頻出入。
這個濾鏡可用於未顯式映射的一些應用。首先試圖找到一個匹配行,如果沒有就把第一個未使用的視頻的音頻信號插入。
-
連接3個輸入(正確設置通道布局)
ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
-
從6路音頻合成為5.1輸出到
ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
out
ladspa
加載一個LADSPA(Linux音頻開發人員的簡和插件API)插件
編譯選項:--enable-ladspa,接受下面的值。
-
file, f
描述LADSPA庫所在文件,如果
LADSPA_PATH環境變量被定義,LADSPA插件將在被逗號分隔的各個路徑中查找(LADSPA_PATH中的)。否則采樣標准查找順序查找:HOME/.ladspa/lib/,/usr/local/lib/ladspa/,/usr/lib/ladspa/. -
plugin, p
指定庫中的插件。有些庫只有一個插件,而另外一些可能有多個。如果沒有設定,則指定庫中所有的插件將被列出
-
controls, c
有由’|’分隔的浮點數指列表,以確定加載的行為(例如延遲、閥值或者增益) 。控制參數需要由語法:
c0=value0|c1=value1|c2=value2|...,這樣來設置第i個選項值。如果設置為help將輸出有效的控制器和可用的打印控制參數 -
sample_rate, s
指定采樣率,默認44100,僅用於插件有0號輸入。
-
nb_samples, n
設置每個通道每個輸出幀中包含的樣本點數。默認1024,僅用於插件有0號輸入。
-
duration, d
設置最小持續時間。參考持續時間語法來描述.注意實際返回的結果持續時間可能大於指定時間,生成的音頻總是少一個完整的幀。如果沒有特別指定,或者表示持續時間的值為負數,則表明生成的音頻持續不斷。僅用於於插件有0號輸入。
ladspa例子
-
列出amp(LADSPA e例子插件)庫中有效插件:
ladspa=file=amp
-
列出所有有效的控制項和有效值范圍(對vcf_notch插件,其在VC庫中):
ladspa=f=vcf:p=vcf_notch:c=help
-
利用計算機音樂工具包(CMT)插件庫模擬低質量的音頻設備:
ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
-
使用TAP-plugins添加混響的音頻(湯姆-Tom-的音頻處理插件):
ladspa=file=tap_reverb:tap_reverb
-
產生白噪聲,有.2振幅:
ladspa=file=cmt:noise_source_white:c=c0=.2
-
利用Metronome from the C* Audio Plugin Suite (CAPS)庫中的C* Click插件,產生20bmp的內容:
ladspa=file=caps:Click:c=c1=20'
-
應用C* Eq10X2 - Stereo 10段均衡效應:
ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
Commands
它支持下面的命令:
-
cN
編輯
N-th控制值如果指定的值無效,會忽略它。
lowpass
應用3dB頻點倍帶寬的低通濾波器。它可以是單極或者雙極的(默認)。濾鏡每個8度有6dB的衰減(20dB 則是10倍)
濾鏡接受下面的選項:
-
frequency, f
設置頻點,默認500.
-
poles, p
設置極數,默認2
-
width_type
設置帶寬計算模式.
h
Hzq
Q-Factoro
octaves
slope -
width, w
設置帶寬,其根據
width_type計數,僅對雙極濾鏡,有0.707q的.巴特沃斯響應
pan
按指定的增益關系混合。濾鏡接受通道布局和一組通道定義
這個濾鏡也可以有效的重新映射通道音頻流。
濾鏡接受的參數格式為:"l|outdef|outdef|..."
-
l
輸出通道布局或者通道號
-
outdef
輸出通道指定,格式: "out_name=[gain*]in_name[+[gain*]in_name...]"
-
out_name
輸出通道名,每個通道 (FL, FR, 等) 或者通道索引數 (c0, c1, etc.)
-
gain
增益倍數,1表示不變
-
in_name
采用的輸入通道,參考
out_name的介紹。它不能是混合了名字和索引號的輸入通道(描述)
如果在通道描述中有‘=’而不是‘<’,則表明對指定通道總是按1倍重整(表明不變),從而避免削波噪音
pan的混合例子
例如,如果想下變換立體聲為單聲道,而且更大的權重是在左聲道:
pan=1c|c0=0.9*c0+0.1*c1
一個定制的下變換工作與 3- 4- 5- 和7- 通道環繞
pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR
pan的再映射例子
通道再映射僅在下面的情況起效:
-
增益為0或者1
-
每個輸入僅有一個通道輸出
如果這些條件都滿足,濾鏡將通知用戶("Pure channel mapping detected"-“純通道映射發現”),並使用一個優化和無損方法重新映射。
例如:如果有一個5.1聲道要映射立體聲,去除擴展通道:
pan="stereo| c0=FL | c1=FR"
對於同一個源,你也可以交換左前和右前,保持輸入布局:
pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"
如果是立體聲源,要對左前通道靜音(但保持立體聲通道布局):
pan="stereo|c1=c1"
仍然是立體聲,把右前用兩次:
pan="stereo| c0=FR | c1=FR"
replaygain
ReplayGain掃描儀濾鏡。這個濾鏡以一個音頻流作為輸入和輸出也不改變。在過結束后顯示track_gain和track_peak。
resample
轉換音頻采樣格式,采樣率和通道布局,它一般不直接使用。
silencedetect
檢測一個音頻流中的靜音。
這個濾鏡是在檢測到輸入音頻小於或等於一個噪音公差值,且持續時間大於或等於最低噪音持續時間時輸出日志消息
輸出的時間和持續時間以秒為單位
濾鏡接受下面的選項:
-
duration, d
設置需通告的靜默持續時間(默認為2秒).
-
noise, n
設置噪聲限,可以采樣為dB描述 (指附加值的dB表示) 或者振幅比,默認為-60dB或者0.001 0.001.
silencedetect例子
-
檢測5秒靜默,-50dB的噪音限
silencedetect=n=-50dB:d=5
-
噪音限為0.0001 檢測靜默(靜默時長2秒)
ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
silenceremove
從音頻的開始、中間或者結束刪除靜默
濾鏡接受如下選項:
-
start_periods
這個值用來指定在開始時應該作為靜默削減的音頻幅度,0表示不削減,指定一個非0值則表示直到找到一個非靜默值時的都被削減掉。通常該值為1,而更高的值甚至可以削減掉所有的音頻。默認為0
-
start_duration
指定一個非靜默持續時間閥值,如果非靜默時間超過該閥值則不被削減,否則記為連續靜默中的脈沖噪音。通過增加這個值,脈沖噪聲可以視為靜默被修剪掉,缺省為0
-
start_threshold
這個用於指出該作為靜默的樣本值。對於數字音頻,值為0肯定很合適作為表明是靜默的,但對於模擬音頻(ADC獲取的),你可能希望增加這個值(作為背景噪音),可以指定dB值或者振幅比,默認為0
-
stop_periods
指定為從音頻削減沉默數。為了從中間削減沉默,需要為
stop_periods指定一個負數值。這個值被視為有積極的價值,用於顯示效果應該重啟start_periods規定的處理,使其適合於去除的沉默的音頻。默認值是0。 -
stop_duration
指定一個時間的沉默之前,必須存在音頻不是復制,通過指定一個更高的持續時間,沉默會更多的留在音頻中,默認為0.
-
stop_threshold
這個值類似
start_threshold,但是是從音頻末尾削減。也可以用dB值或者振幅比指定,默認為0 -
leave_silence
這表明
stop_duration長度的音頻應該原封不動的在每個周期的開始沉默,例如如果你想刪除長單詞之間的停頓,但不想完全刪除停頓。默認值是0。
silenceremove例子
-
下面的示例說明了如何使用這個過濾器開始錄音,而不包含通常發生的按鍵后的延遲按,即按下鍵到開始記錄之間的靜默:
silenceremove=1:5:0.02
treble
對頻點的3倍(上下)利用雙刀擱置(two-pole shelving)濾鏡增加或者減少頻率響應,類似於高保真的音控,也被稱為擱置平衡(EQ)
濾鏡接受下面選項:
-
gain, g
Give the gain at whichever is the lower of ~22 kHz and the Nyquist frequency. Its useful range is about -20 (for a large cut) to +20 (for a large boost). Beware of clipping when using a positive gain.
-
frequency, f
設置頻點,默認3000Hz.
-
width_type
設置帶寬計算模式.
h
Hzq
Q-Factoro
octaves
slope -
width, w
設置帶寬,其根據
width_type計數,僅對雙極濾鏡,有0.707q的.巴特沃斯響應
volume
調整輸入音量
接受下面的參數:
-
volume
設置音頻音量表達式
輸出值是剪輯的最大值
輸出音頻音量有如下關系::
output_volume = volume * input_volume
默認為 "1.0".
precision這個參數指出數學(計算)精度
它決定哪些輸入樣本格式將被允許,這影響伸縮量的精度.
fixed
8-bit整形,它限於輸入是 U8, S16, 和 S32.float
32-bit 浮點,它限於輸入格式是FLT,這是默認值double
64-bit 浮點;它限於輸入格式是DBL
replaygain
選擇當輸入幀數據遇到`ReplayGain`(重演設置——音量增益)時的處理
drop
丟掉ReplayGain,按原始標准 (默認值).
ignore
忽略ReplayGain側數據,但是離開它的框架
track
采用軌道設置,如果存在
album
采用專輯設置,如果存在
replaygain_preamp
在應用`replaygain`的前置放大增益,單位dB
replaygain_preamp默認值為0.0.
eval
設置如果計算音量表達式
它接受以下值:
‘once’
僅在初始化時計算一次,或者`volume`命令被發生時
‘frame’
在每個輸入幀都重新計算
默認‘once’.
音量表達式支持下面的參數:.
-
n
幀數 (從0開始計數)
-
nb_channels
通道數
-
nb_consumed_samples
總的經過濾鏡的樣本點數
-
nb_samples
當前幀中樣本點數
-
pos
在文件中的幀偏移
-
pts
幀的PTS
-
sample_rate
采樣率
-
startpts
流開始來的PTS計數
-
startt
流開始來的時間
-
t
幀時間
-
tb
時間戳時基
-
volume
最近設置的音量值
注意如果計算模式是once,則除了sample_rate和tb有效外其他都無效而等於NAN
volume命令
濾鏡支持下面的命令:
-
volume
編輯音量表達式。這個命令接受相同選項和語法作為命令參數
如果描述的表達式無效,它將保持當前值
-
replaygain_noclip
通過限制防止剪裁
默認對於
replaygain_noclip為1
volume例子
-
調整輸入音量
volume=volume=0.5
volume=volume=1/2
volume=volume=-6.0206dB在上面的例子中所指定的選項名
volume可以省略,例如:volume=0.5
-
輸入音頻功率增加6dB,使用定點精度
volume=volume=6dB:precision=fixed
-
一個音頻在10秒后5秒內逐漸削弱效果
volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
volumedetect
檢測輸入音頻音量
濾鏡沒有參數,輸入也不會被編輯。統計數據將在輸入流結束后輸出到日志中。
特別是它顯示平均音量(均方根),最大音量(每個樣本基礎上)和開始來的音量直方圖(從最大音量累計1/1000樣本)
所有的音量都是相對於最大PCM值的
volumedetect例子
這里有一個輸出實例:
[Parsed_volumedetect_0 0xa23120] mean_volume: -27 dB
[Parsed_volumedetect_0 0xa23120] max_volume: -4 dB
[Parsed_volumedetect_0 0xa23120] histogram_4db: 6
[Parsed_volumedetect_0 0xa23120] histogram_5db: 62
[Parsed_volumedetect_0 0xa23120] histogram_6db: 286
[Parsed_volumedetect_0 0xa23120] histogram_7db: 1042
[Parsed_volumedetect_0 0xa23120] histogram_8db: 2551
[Parsed_volumedetect_0 0xa23120] histogram_9db: 4609
[Parsed_volumedetect_0 0xa23120] histogram_10db: 8409
它意味着:
-
平均音量是-27dB,或 10……-2.7
-
最大音量點為-4dB或者說介於-4dB 到-5dB
-
有6個樣本點是-4dB,62個-5dB,286個-6dB 等等
換句話說,提供+4dB的音量不會引起任何剪裁(削波),而提高+5dB就有6個地方會削波。
