FFplay文檔解讀-33-視頻過(guò)濾器八

前言

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ù),如果xy在區(qū)域之外,則該值將自動(dòng)剪切到更近的邊緣。

29.71.1 示例

  • 水平翻轉(zhuǎn)圖像:

      geq=p(W-X\,Y)
    
  • 生成具有角度PI/3100像素波長(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 CLUTHald 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,weakstrong。它默認(rèn)為none

29.76 histogram

計(jì)算并繪制輸入視頻的顏色分布直方圖。

計(jì)算出的直方圖是圖像中顏色分量分布的表示。

標(biāo)準(zhǔn)直方圖顯示圖像中的顏色分量分布。 顯示每個(gè)顏色分量的顏色圖表。 根據(jù)輸入格式顯示當(dāng)前幀中Y,U,VARG,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)不要使用它。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容