ffmpeg音訊濾鏡
音訊濾鏡
分離聲道
1 轉碼(原始檔沒問題可以省略) ffmpeg -i jy.ts -vcodec h264 -acodec aac jy1.ts
2 取一個聲道 ffmpeg -i jy1.ts -af "pan=stereo|c0=FL|c1=FL" -c:v copy 1.ts
3 取另一個聲道 ffmpeg -i jy1.ts -af "pan=stereo|c0=FR|c1=FR" -c:v copy 2.ts
單音軌變雙音軌
volumedetect
檢測輸入音訊音量
濾鏡沒有引數,輸入也不會被編輯。統計資料將在輸入流結束後輸出到日誌中。
特別是它顯示平均音量(均方根),最大音量(每個樣本基礎上)和開始來的音量直方圖(從最大音量累計1/1000樣本)
所有的音量都是相對於最大PCM值的
volumedetect例子
這裡有一個輸出例項: ffmpeg -i dd.mp3 -af "volumedetect" -f null /dev/null
[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個地方會削波。
volume
例子:
filter := " -filter_complex \"[0:a]volume=" + st.OrigVol + "[a0]; [1:a]volume=" + st.MixVol + "[a1];[a0][a1]amix=inputs=2:duration=shortest:dropout_transition=2[a]\" -map 0:v:0 -map \"[a]\" -c:v copy -acodec aac -bsf:v h264_mp4toannexb -f hls -hls_time 2 -hls_list_size 0 "
當你配置編譯FFmpeg時,先採用--disable-filters
可以禁止所有的濾鏡,然後顯式配置想要支援的濾鏡。
下面是當前可用的音訊濾鏡
adelay
延遲一個或者多個音訊通道
它接受如下選項:
delays
引數是以
|
分隔的列表字串,分別用於指明對應各個通道延遲的微秒(milliseconds)數。應提供至少一個大於0的延遲。未使用的延遲將被靜默忽略。如果延遲值數量小於通道數量,則剩餘通道不會被延遲。adelay例子
第一通道延遲1.5秒,第三通道0.5秒(其它通道均不延遲變化)
adelay=1500|0|500
- 例子: ffmpeg -i voice1.m4a -filter_complex adelay="1000|1000" output.m4a
aecho
重複應用於音訊輸入(回聲效果)濾鏡
回聲反射聲音,可以自然發生在山區大型建築(有時)談話時,或者大叫時,數字回聲效果模擬這種行為,通常用來幫助填補一個樂器或聲音的(回聲)。原始訊號和發射訊號的時差就是delay
(延遲),而反射訊號的響度是decay
(衰減)。多個回聲可以有不同的延遲和衰減。
要描述一個回聲效果需要如下的引數值(注意下面的引數之間用:
分隔):
in_gain
設定輸入獲得的反射訊號強度,預設0.6.
out_gain
設定輸出增加反射訊號強度,預設0.3.
delays
一個由
|
分隔原始訊號和反射作用的指代延遲時間的字串列表,單位是微秒(milliseconds)。每個延遲允許範圍(0-90000.0),預設為1000decays
設定一個由
|
分隔的反映訊號響度衰減值的列表,每個衰減值範圍是(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_channelsnb_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
Hz
q
Q-Factor
o
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
Hz
q
Q-Factor
o
octave-8分音度
s
slope-斜率
width, w
設定帶通濾波頻寬(單位為
width_type
)
bandreject
應用一個通過中心點頻率frequency
定義的兩極Butterworth(巴特沃斯)帶通濾波器,其有單側3dB的頻寬。濾鏡到期後每個8分音度有6dB的衰減。
frequency, f
設定濾鏡的中心點頻率,預設3000.
width_type
設定指定帶通濾波的型別:
h
Hz
o
octave-8分音度
s
slope-斜率
width, w
設定帶通濾波頻寬(單位為
width_type
)
bass
使用雙刀擱置濾波器增加或減少低音(低)音訊的頻率響應,類似於一個標準的高保真的音控。這也被稱為擱置平衡(EQ)。
濾鏡接受下面選項:
gain, g
設定在0Hz的增益,其可用的範圍約為-20(大振幅)+20。要合適的值以防被削波(振幅過大超出說了樣本格式允許值範圍就削波)
frequency, f
設定濾鏡的中心點頻率,預設100 Hz.
width_type
設定指定帶通濾波的型別:
h
Hz
o
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
Hz
q
Q-Factor
o
octave
s
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
Hz
q
Q-Factor
o
octave
s
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
Hz
q
Q-Factor
o
octave
s
slope
width, w
設定頻寬,其根據
width_type
計數,僅對雙極濾鏡,有0.707q的.巴特沃斯響應
pan
分離聲道
1 轉碼(原始檔沒問題可以省略) ffmpeg -i jy.ts -vcodec h264 -acodec aac jy1.ts
2 取一個聲道 ffmpeg -i jy1.ts -af "pan=stereo|c0=FL|c1=FL" -c:v copy 1.ts
3 取另一個聲道 ffmpeg -i jy1.ts -af "pan=stereo|c0=FR|c1=FR" -c:v copy 2.ts
按指定的增益關係混合。濾鏡接受通道佈局和一組通道定義
這個濾鏡也可以有效的重新對映通道音訊流。
濾鏡接受的引數格式為:"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"
例子:ffmpeg -i 5.1audio-AC3.mpg -af "pan=stereo|c0=FL|c1=FR" -c:v copy -acodec aac 1.ts
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值或者振幅比指定,預設為0leave_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
Hz
q
Q-Factor
o
octave
s
slope
width, w
設定頻寬,其根據
width_type
計數,僅對雙極濾鏡,有0.707q的.巴特沃斯響應
相關推薦
ffmpeg音訊濾鏡
音訊濾鏡分離聲道1 轉碼(原始檔沒問題可以省略) ffmpeg -i jy.ts -vcodec h264 -acodec aac jy1.ts2 取一個聲道 ffmpeg -i jy1.ts -af "pan=stereo|c0=FL|c1=FL" -c:v copy
ffmpeg濾鏡調整顏色明豔和亮度
1.亮度 eq 設定亮度、對比度、飽和度和近似伽馬(gamma)調整 濾鏡支援下面選項: contrast 設定contrast表示式,值必須是一個-2.0-2.0間的浮點數,預設為0 brightness 設定brightness表示式.值必須是一個-1.0-1.
FFmpeg中的濾鏡(四):視訊濾鏡 -- subtitles
subtitles 描述: 該濾鏡呼叫libass庫,講字幕添新增到輸入視訊中。如果要使用該濾鏡,需要在編譯FFmpeg時使用--enable-libass配置項。這個濾鏡需要配合使用 libavcodec和libavformat將輸入的字幕檔案轉換為ASS(ASS格式見
FFmpeg濾鏡使用指南
目錄 1. FFmpeg濾鏡文件 2. 示例 2.1 縮放 2.2 視訊加速 2.3 濾鏡圖,鏈和濾鏡關係 2.4 多個輸入覆蓋同一個2x2 網格 2.5 轉義字元 2.6 燒錄時間碼 2.7 描述命令列引數 2.8 測試源 3. 濾鏡列表
FFMPEG 最簡濾鏡filter使用例項(實現視訊縮放,裁剪,水印等)
FFMPEG官網給出了FFMPEG 濾鏡使用的例項,它是將視訊中的畫素點替換成字元,然後從終端輸出。我在該例項的基礎上稍微的做了修改,使它能夠儲存濾鏡處理過後的檔案。在上程式碼之前先明白幾個概念: Filter:代表單個filter FilterPa
FFmpeg一次同時多個濾鏡處理
ffplay -i QQ視訊_4EB2BA95F40F7273B183B39B62EBCE3D.mp4 -vf delogo=x=30:y=50:w=25:h=100:show=1,delogo=x
新手學習FFmpeg - 呼叫API編寫實現多次淡入淡出效果的濾鏡
前面幾篇文章聊了聊FFmpeg的基礎知識,我也是接觸FFmpeg不久,除了時間處理之外,很多高深(濾鏡)操作都沒接觸到。在學習時間處理的時候,都是通過在ffmpeg目前提供的avfilter基礎上面修修補補(補充各種debug log)來驗證想法。 而這次我將嘗試新建立一個avfilter,來實現一個新濾鏡。
FFmpeg libswscale原始碼分析2-轉碼命令列與濾鏡圖
本文為作者原創,轉載請註明出處: libswscale 原始碼分析系列文章: [1]. [FFmpeg libswscale原始碼分析1-API介紹](https://www.cnblogs.com/leisure_chn/p/14349382.html) [2]. [FFmpeg libsws
HTML5----CSS3圖片濾鏡(filter)特效
拖動 ner hot war str term min jquer onchange 支持Chrome: 暫不支持瀏覽器:FF,IE... 希望後者努力 效果圖: CSS: <style type="text/css"> @-webkit-key
CSS3濾鏡
() rop add 書寫 mic bsp .com left filter h4 { background: #32afba; line-height: 36px; color: #fff; font-family: Microsoft YaHei; letter-spa
自己動手,實現“你的名字”濾鏡
height 使用 圖片 很好 board courier mage margin ges 我喜歡《你的名字》這個故事,前一段時間在微信上使用過它的濾鏡,實現的效果很驚艷,應該類似於下面的這些結果 這三幅圖應該都是手機版本制作的,它們一個比較顯著的特點
Android平臺Camera實時濾鏡實現方法探討(十一)--實時美顏濾鏡
.net 兩個 其它 強人 突出 pad eight 地址 模式 上一章完畢了對圖片的磨皮處理。經過簡單算法流程優化,能夠達到非常快的速度。可是不能用於實時美顏。經實驗,若採用僅僅處理Y信號的方案。半徑極限大約是5-10,超過10則明顯感受到卡頓。但對於1920X1
Android平臺Camera實時濾鏡實現方法探討(十)--代碼地址以及簡單介紹(20160118更新)
div iss 將在 spa 方法 target 用途 net dsm 簡單做了個相機和圖片編輯模塊,時間原因非常多功能還沒有做。尚有BUG,見諒,將在以後抽時間改動 代碼地址 PS:請點個Star^-^ -----------------------
PS 濾鏡算法原理——碎片效果
net -a dsm 原理 -o span offset gravity == %%% Fragment %%% 對原圖做四個方向的平移。然後對平移的結果取平均 %%% 碎片效果 clc; clear all; Image=imread(‘4.jpg‘
GLSL/C++ 實現濾鏡效果
概念 第一個 美麗 函數 form 一個 傳遞 eve 針對 入門效果之浮雕 "浮雕"圖象效果是指圖像的前景前向凸出背景。常見於一些紀念碑的雕刻上。要實現浮雕事實上很easy。我們把圖象的一個象素和左上方的象素進行求差運算。並加上一個灰度。這個
CoreImage 中的模糊濾鏡
最好 make category emf down 句柄 效果 effective connect 1.CoreImage 中的模糊濾鏡 1.1CoreImage是蘋果用來簡化圖片處理的框架 1.2CIImage、CIFilter與CIContext三者聯系
css3濾鏡效果
gid tran microsoft for 效果 image pix lte css filter:blur(3px); -webkit-filter:blur(3px); -moz-filter:blur(3px); -o-filter:blur(3px); filte
圖像像素基本操作——自然系列濾鏡
風格 str uil ext image 查找表 stack load ati 主要代碼如下: package chapter5; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; impo
實現IE兼容方案之一(濾鏡)
alpha arp ie6 code pix fault 技術 bsp work 當 CSS3 遇上較低版本 IE,濾鏡就成了實現兼容性的折衷方案之一。雖然濾鏡是過時很久的技術了,但還是能看出微軟的高瞻遠矚——早在 IE6 就用濾鏡實現了 bug 叢
16-THREE.JS 光暈濾鏡
com obj ntc 效果 document step clear scene http <!DOCTYPE html> <html> <head> <title></title> <