前言
Github地址:Github
簡(jiǎn)書(shū)地址:簡(jiǎn)書(shū)
專(zhuān)輯地址:FFplay專(zhuān)輯
29.70 gblur
應(yīng)用高斯模糊濾鏡。
過(guò)濾器接受以下選項(xiàng):
sigma
設(shè)置水平西格瑪,高斯模糊的標(biāo)準(zhǔn)偏差。 默認(rèn)值為0.5。
steps
設(shè)置高斯近似的步數(shù)。 默認(rèn)值是1。
planes
設(shè)置要過(guò)濾的平面。 默認(rèn)情況下,將過(guò)濾所有平面。
sigmaV
設(shè)置垂直sigma,如果為負(fù),它將與sigma相同。 默認(rèn)值為-1。
29.71 geq
過(guò)濾器接受以下選項(xiàng):
lum_expr,lum
設(shè)置亮度表達(dá)式。
cb_expr,cb
設(shè)置色度藍(lán)色表達(dá)式。
cr_expr,cr
設(shè)置色度紅色表達(dá)式。
alpha_expr, a
設(shè)置alpha表達(dá)式。
red_expr,r
設(shè)置紅色表達(dá)式。
green_expr,g
設(shè)置綠色表達(dá)式。
blue_expr,b
設(shè)置藍(lán)色表達(dá)式。
根據(jù)指定的選項(xiàng)選擇顏色空間。如果指定了'lum_expr','cb_expr'或'cr_expr'選項(xiàng)之一,則過(guò)濾器將自動(dòng)選擇YCbCr顏色空間。如果指定了'red_expr','green_expr'或'blue_expr'選項(xiàng)之一,它將選擇RGB顏色空間。
如果未定義其中一個(gè)色度表達(dá)式,則它會(huì)回落到另一個(gè)色度表達(dá)式上。如果未指定alpha表達(dá)式,則將評(píng)估為不透明值。如果沒(méi)有指定色度表達(dá)式,它們將評(píng)估亮度表達(dá)式。
表達(dá)式可以使用以下變量和函數(shù):
N
過(guò)濾幀的序號(hào),從0開(kāi)始。
X
Y
當(dāng)前樣本的坐標(biāo)。
W
H
圖像的寬度和高度。
SW
SH
寬度和高度比例取決于當(dāng)前過(guò)濾的平面。它是相應(yīng)的亮度平面像素?cái)?shù)與當(dāng)前平面數(shù)之間的比率。例如。對(duì)于YUV4:2:0,亮度平面的值為1,1,色度平面的值為0.5,0.5。
T
當(dāng)前幀的時(shí)間,以秒為單位表示。
p(x,y)
返回當(dāng)前平面的位置(x,y)處的像素值。
lum(x,y)
返回亮度平面的位置(x,y)處的像素值。
cb(x,y)
返回藍(lán)色差色度平面的位置(x,y)處的像素值。如果沒(méi)有這樣的plane,則返回0。
cr(x,y)
返回紅差色度平面的位置(x,y)處的像素值。如果沒(méi)有這樣的plane,則返回0。
r(x,y)
g(x,y)
b(x,y)
返回紅色/綠色/藍(lán)色分量的位置(x,y)處的像素值。如果沒(méi)有這樣的組件,則返回0。
alpha(x,y)
返回alpha平面的位置(x,y)處的像素值。如果沒(méi)有這樣的plane,則返回0。
對(duì)于函數(shù),如果x和y在區(qū)域之外,則該值將自動(dòng)剪切到更近的邊緣。
29.71.1 示例
-
水平翻轉(zhuǎn)圖像:
geq=p(W-X\,Y) -
生成具有角度
PI/3和100像素波長(zhǎng)的二維正弦波:geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128 -
產(chǎn)生一種奇特的神秘移動(dòng)光線:
nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128 -
生成快速浮雕效果:
format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2' -
根據(jù)像素位置修改
RGB分量:geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)' -
創(chuàng)建與輸入大小相同的徑向漸變(另請(qǐng)參見(jiàn)
vignette過(guò)濾器):geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
29.72 gradfun
通過(guò)截?cái)嗟?code>8位顏色深度來(lái)修復(fù)有時(shí)引入幾乎平坦區(qū)域的條帶偽影。插入應(yīng)該位于樂(lè)隊(duì)所在位置的漸變,并將它們抖動(dòng)。
它僅用于播放。在有損壓縮之前不要使用它,因?yàn)閴嚎s往往會(huì)失去抖動(dòng)并帶回帶。
它接受以下參數(shù):
strength
濾鏡將改變?nèi)魏我粋€(gè)像素的最大量。這也是檢測(cè)幾乎平坦區(qū)域的閾值??山邮艿闹捣秶鷱?code>.51到64;默認(rèn)值為1.2。超出范圍的值將被剪切到有效范圍。
radius
適合漸變的鄰域。半徑越大,漸變?cè)狡交?,但也?huì)阻止濾鏡修改詳細(xì)區(qū)域附近的像素??山邮艿闹禐?code>8-32;默認(rèn)值為16。超出范圍的值將被剪切到有效范圍。
或者,可以將選項(xiàng)指定為扁平字符串:strength [:radius]。
29.72.1 示例
-
使用強(qiáng)度為
3.5,半徑為8的過(guò)濾器:gradfun=3.5:8 -
指定半徑,省略強(qiáng)度(將回落到默認(rèn)值):
gradfun=radius=8
29.73 haldclut
將Hald CLUT應(yīng)用于視頻流。
第一個(gè)輸入是要處理的視頻流,第二個(gè)輸入是Hald CLUT。 Hald CLUT輸入可以是簡(jiǎn)單圖像或完整視頻流。
過(guò)濾器接受以下選項(xiàng):
shortest
最短輸入終止時(shí)強(qiáng)制終止。 默認(rèn)值為0。
repeatlast
在流結(jié)束后繼續(xù)應(yīng)用最后一個(gè)CLUT。 在達(dá)到CLUT的最后一幀后,值為0將禁用過(guò)濾器。 默認(rèn)值為1。
haldclut也有與lut3d相同的插值選項(xiàng)(兩個(gè)濾波器共享相同的內(nèi)部結(jié)構(gòu))。
有關(guān)Hald CLUT的更多信息,請(qǐng)?jiān)L問(wèn)Eskil Steenberg的網(wǎng)站(Hald CLUT作者),網(wǎng)址為http://www.quelsolaar.com/technology/clut.html。
29.73.1 Workflow 示例
29.73.1.1 Hald CLUT video stream
生成一個(gè)身份Hald CLUT流改變了各種效果:
ffmpeg -f lavfi -i haldclutsrc=8 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -t 10 -c:v ffv1 clut.nut
注意:確保使用無(wú)損編解碼器。
然后將它與haldclut一起使用,將其應(yīng)用于一些隨機(jī)流:
ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
Hald CLUT將應(yīng)用于10秒(clut.nut的持續(xù)時(shí)間),然后該CLUT流的最新圖片將應(yīng)用于mandelbrot流的剩余幀。
29.73.1.2 Hald CLUT with preview
Hald CLUT應(yīng)該是Level * Level * Level by Level * Level * Level像素的平方圖像。 對(duì)于給定的Hald CLUT,F(xiàn)Fmpeg將從圖片的左上角開(kāi)始選擇最大可能的正方形。 剩余的填充像素(底部或右側(cè))將被忽略。 此區(qū)域可用于添加Hald CLUT的預(yù)覽。
通常,haldclut過(guò)濾器將支持以下生成的Hald CLUT:
ffmpeg -f lavfi -i haldclutsrc=8 -vf "
pad=iw+320 [padded_clut];
smptebars=s=320x256, split [a][b];
[padded_clut][a] overlay=W-320:h, curves=color_negative [main];
[main][b] overlay=W-320" -frames:v 1 clut.png
它包含原始和CLUT效果的預(yù)覽:SMPTE顏色條顯示在右上方,并在顏色變化處理的相同顏色條下方。
然后,可以通過(guò)以下方式顯示此Hald CLUT的效果:
ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
29.74 hflip
水平翻轉(zhuǎn)輸入視頻。
例如,要使用ffmpeg水平翻轉(zhuǎn)輸入視頻:
ffmpeg -i in.avi -vf "hflip" out.avi
29.75 histeq
此濾鏡在每幀的基礎(chǔ)上應(yīng)用全局顏色直方圖均衡。
它可用于校正具有壓縮像素強(qiáng)度范圍的視頻。濾波器重新分配像素強(qiáng)度以均衡它們?cè)趶?qiáng)度范圍內(nèi)的分布。它可以被視為"automatically adjusting contrast filter"(“自動(dòng)調(diào)整對(duì)比度濾波器”)。此濾鏡僅用于糾正降級(jí)或捕獲不良的源視頻。
過(guò)濾器接受以下選項(xiàng):
strength
確定要應(yīng)用的均衡量。隨著強(qiáng)度的降低,像素強(qiáng)度的分布越來(lái)越接近輸入幀的分布。該值必須是[0,1]范圍內(nèi)的浮點(diǎn)數(shù),默認(rèn)為0.200。
intensity
設(shè)置可生成的最大強(qiáng)度并適當(dāng)縮放輸出值。應(yīng)根據(jù)需要設(shè)定強(qiáng)度,然后如果需要可以限制強(qiáng)度以避免洗掉。該值必須是[0,1]范圍內(nèi)的浮點(diǎn)數(shù),默認(rèn)為0.210。
antibanding
設(shè)置antibanding水平。如果啟用,則濾波器將隨機(jī)地改變輸出像素的亮度一小部分,以避免直方圖的條帶化??赡艿闹禐?code>none,weak或strong。它默認(rèn)為none。
29.76 histogram
計(jì)算并繪制輸入視頻的顏色分布直方圖。
計(jì)算出的直方圖是圖像中顏色分量分布的表示。
標(biāo)準(zhǔn)直方圖顯示圖像中的顏色分量分布。 顯示每個(gè)顏色分量的顏色圖表。 根據(jù)輸入格式顯示當(dāng)前幀中Y,U,V,A或R,G,B分量的分布。 在每個(gè)圖下方,顯示了顏色分量比例計(jì)。
過(guò)濾器接受以下選項(xiàng):
level_height
設(shè)置關(guān)卡高度。 默認(rèn)值為200。允許范圍為[50,2048]。
scale_height
設(shè)置色標(biāo)高度。 默認(rèn)值為12。允許范圍為[0,40]。
display_mode
設(shè)置顯示模式。 它接受以下值:
| 值 | 解釋 |
|---|---|
| stack | 每個(gè)顏色組件圖放在彼此下方 |
| parade | 每個(gè)顏色分量圖并排放置 |
| overlay | 除了表示顏色分量的圖形直接疊加在彼此之外時(shí),呈現(xiàn)與游行中的信息相同的信息 |
默認(rèn)值是:stack。
levels_mode
設(shè)置模式。 可以是線性的,也可以是對(duì)數(shù)的。 默認(rèn)是線性的。
components
設(shè)置要顯示的顏色組件。 默認(rèn)值為7。
fgopacity
設(shè)置前景不透明度。 默認(rèn)值為0.7。
bgopacity
設(shè)置背景不透明度。 默認(rèn)值為0.5。
29.76.1 示例
-
計(jì)算并繪制直方圖:
ffplay -i input -vf histogram
29.77 hqdn3d
這是一款高精度/高質(zhì)量的3d去噪濾波器。 它旨在減少圖像噪聲,產(chǎn)生平滑的圖像并使靜止圖像真正靜止。 它應(yīng)該增強(qiáng)壓縮性。
它接受以下可選參數(shù):
luma_spatial
非負(fù)浮點(diǎn)數(shù),指定空間亮度強(qiáng)度。 它默認(rèn)為4.0。
chroma_spatial
指定空間色度強(qiáng)度的非負(fù)浮點(diǎn)數(shù)。 默認(rèn)為3.0 * luma_spatial / 4.0。
luma_tmp
浮點(diǎn)數(shù),指定亮度時(shí)間強(qiáng)度。 默認(rèn)為6.0 * luma_spatial / 4.0。
chroma_tmp
浮點(diǎn)數(shù),指定色度時(shí)間強(qiáng)度。 它默認(rèn)為luma_tmp * chroma_spatial / luma_spatial。
29.78 hwdownload
將硬件幀下載到系統(tǒng)內(nèi)存。
輸入必須是硬件幀,輸出是非硬件格式。 并非所有格式都支持輸出 -可能需要在圖表后面插入一個(gè)額外的‘format’過(guò)濾器,以便以支持的格式輸出輸出。
29.79 hwmap
將硬件幀映射到系統(tǒng)內(nèi)存或其他設(shè)備。
該濾波器有幾種不同的操作模式; 使用哪一個(gè)取決于輸入和輸出格式:
- 硬件幀輸入,正常幀輸出。
??將輸入幀映射到系統(tǒng)內(nèi)存并將它們傳遞給輸出。 如果稍后需要原始硬件框架(例如,在覆蓋部分其他內(nèi)容之后),則可以在下一個(gè)模式中再次使用hwmap過(guò)濾器來(lái)檢索它。
- 正常幀輸入,硬件幀輸出。
??如果輸入實(shí)際上是軟件映射的硬件幀,則取消映射 - 即返回原始硬件幀。
??否則,必須提供設(shè)備。 在該設(shè)備上為輸出創(chuàng)建新的硬件表面,然后將它們映射回輸入處的軟件格式,并將這些幀提供給前面的過(guò)濾器。 這將像'hwupload'過(guò)濾器一樣,但當(dāng)輸入已經(jīng)是兼容格式時(shí),可能能夠避免額外的副本。
- 硬件幀輸入和輸出。
??必須直接或使用'derive_device'選項(xiàng)為輸出提供設(shè)備。 輸入和輸出設(shè)備必須是不同類(lèi)型和兼容的 - 這的確切含義取決于系統(tǒng),但通常意味著它們必須引用相同的底層硬件上下文(例如,參考相同的圖形卡)。
??如果輸入幀最初是在輸出設(shè)備上創(chuàng)建的,則取消映射以檢索原始幀。
??否則,將幀映射到輸出設(shè)備 - 在輸出上創(chuàng)建與輸入幀相對(duì)應(yīng)的新硬件幀。
接受以下附加參數(shù):
mode
設(shè)置幀映射模式。 下面是一些組合:
| 組合 | 解釋 |
|---|---|
| read | 映射的幀應(yīng)該是可讀的 |
| write | 映射的幀應(yīng)該是可寫(xiě)的 |
| overwrite | 映射將始終覆蓋整個(gè)幀。 在某些情況下,這可以改善性能,因?yàn)椴恍枰虞d幀的原始內(nèi)容。 |
| direct | 映射不得涉及任何復(fù)制。 在某些情況下,會(huì)創(chuàng)建對(duì)幀副本的間接映射,在這種情況下,無(wú)法進(jìn)行直接映射或者會(huì)出現(xiàn)意外的屬性。 設(shè)置此標(biāo)志可確保映射是直接的,如果不可能則會(huì)失敗。 |
如果未指定,則默認(rèn)為read+write。
derive_device type
而不是使用初始化時(shí)提供的設(shè)備,而是從輸入幀存在的設(shè)備派生類(lèi)型類(lèi)型的新設(shè)備。
reverse
在硬件到硬件映射中,反向映射 - 在接收器中創(chuàng)建幀并將它們映射回源。 在需要在一個(gè)方向上進(jìn)行映射但在所使用的設(shè)備僅支持相反方向的某些情況下,這可能是必要的。
此選項(xiàng)很危險(xiǎn) - 如果對(duì)該過(guò)濾器的輸出有任何其他約束,它可能會(huì)以未定義的方式破壞前面的過(guò)濾器。 如果不完全理解其使用的含義,請(qǐng)不要使用它。