FFplay文档解读-43-视频过滤器十八
29.170 telecine
將電視電影處理應(yīng)用于視頻。
此過(guò)濾器接受以下選項(xiàng):
first_field| top, t | top field first |
| bottom, b | 底部字段優(yōu)先默認(rèn)值為top |
一串?dāng)?shù)字,表示希望應(yīng)用的下拉模式。 默認(rèn)值為23。
Some typical patterns:NTSC output (30i): 27.5p: 32222 24p: 23 (classic) 24p: 2332 (preferred) 20p: 33 18p: 334 16p: 3444PAL output (25i): 27.5p: 12222 24p: 222222222223 ("Euro pulldown") 16.67p: 33 16p: 3333333429.171 threshold
將閾值效果應(yīng)用于視頻流。
此過(guò)濾器需要四個(gè)視頻流才能執(zhí)行閾值處理。 第一個(gè)流是我們正在過(guò)濾的流。 第二流保持閾值,第三流保持最小值,最后,第四流保持最大值。
過(guò)濾器接受以下選項(xiàng):
planes設(shè)置要處理的平面,將復(fù)制未處理的平面。 默認(rèn)值為0xf,將處理所有平面。
例如,如果第一流像素的分量值小于來(lái)自第二閾值流的像素分量的閾值,則將拾取第三流值,否則將拾取第四流像素分量值。
使用顏色源過(guò)濾器可以執(zhí)行各種類(lèi)型的閾值處理:
29.171.1 示例
-
二進(jìn)制閾值,使用灰色作為閾值:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi -
反轉(zhuǎn)二進(jìn)制閾值,使用灰色作為閾值:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi -
截?cái)喽M(jìn)制閾值,使用灰色作為閾值:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi -
閾值為零,使用灰色作為閾值:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi -
使用灰色作為閾值將反轉(zhuǎn)閾值設(shè)置為零:
ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
學(xué)習(xí)地址:音視頻新手快速入門(mén)必備系列-FFmpeg+SDL播放器開(kāi)發(fā)實(shí)現(xiàn)-學(xué)習(xí)視頻教程-騰訊課堂
【文章福利】免費(fèi)領(lǐng)取更多音視頻學(xué)習(xí)資料包、大廠面試題、技術(shù)視頻和學(xué)習(xí)路線圖,資料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以點(diǎn)擊1079654574加群領(lǐng)取哦~ ?
??
29.172 thumbnail
在給定的連續(xù)幀序列中選擇最具代表性的幀。
過(guò)濾器接受以下選項(xiàng):
n設(shè)置幀批量大小進(jìn)行分析; 在一組n幀中,過(guò)濾器將選擇其中一個(gè),然后處理下一批n幀直到結(jié)束。 默認(rèn)值為100。
由于過(guò)濾器會(huì)跟蹤整個(gè)幀序列,因此較大的n值將導(dǎo)致較高的內(nèi)存使用量,因此不建議使用較高的值。
29.172.1 示例
-
每50幀提取一張圖片:
thumbnail=50 -
使用ffmpeg創(chuàng)建縮略圖的完整示例:
ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
29.173 tile
將幾個(gè)連續(xù)的幀拼接在一起。
過(guò)濾器接受以下選項(xiàng):
layout設(shè)置網(wǎng)格大小(即行數(shù)和列數(shù))。有關(guān)此選項(xiàng)的語(yǔ)法,請(qǐng)檢查(ffmpeg-utils)視頻大小語(yǔ)法。
nb_frames設(shè)置給定區(qū)域中要渲染的最大幀數(shù)。它必須小于或等于wxh。默認(rèn)值為0,表示將使用所有區(qū)域。
margin設(shè)置外邊框邊距(以像素為單位)。
padding設(shè)置內(nèi)邊框厚度(即幀之間的像素?cái)?shù))。有關(guān)更高級(jí)的填充選項(xiàng)(例如邊緣的值不同),請(qǐng)參閱填充視頻濾鏡。
color指定未使用區(qū)域的顏色。有關(guān)此選項(xiàng)的語(yǔ)法,請(qǐng)檢查(ffmpeg-utils)顏色語(yǔ)法。顏色的默認(rèn)值為"black"。
overlap將多個(gè)連續(xù)幀拼接在一起時(shí),設(shè)置要重疊的幀數(shù)。該值必須介于0和nb_frames -1之間。
init_padding在顯示第一個(gè)輸出幀之前,將幀數(shù)設(shè)置為最初為空。這可以控制獲得第一個(gè)輸出幀的時(shí)間。該值必須介于0和nb_frames -1之間。
29.173.1 示例
-
在電影中制作所有關(guān)鍵幀('-skip_frame nokey')的8x8 PNG圖塊:
ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
'-vsync 0'是必要的,以防止ffmpeg復(fù)制每個(gè)輸出幀以適應(yīng)最初檢測(cè)到的幀速率。
-
使用混合平面和命名選項(xiàng)在3x2幀的區(qū)域中顯示5張圖片,其間有7個(gè)像素,初始邊距為2像素:
tile=3x2:nb_frames=5:padding=7:margin=2
29.174 tinterlace
執(zhí)行各種類(lèi)型的時(shí)域隔行掃描。
幀從1開(kāi)始計(jì)數(shù),因此第一個(gè)輸入幀被視為奇數(shù)。
過(guò)濾器接受以下選項(xiàng):
mode指定隔行掃描的模式。 此選項(xiàng)也可以單獨(dú)指定為值。 請(qǐng)參閱下文,了解此選項(xiàng)的值列表。
可用值包括:
merge, 0將奇數(shù)幀移動(dòng)到上部字段,甚至移動(dòng)到下部字段,以半幀速率生成雙倍高度幀。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 411111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444Output: 11111 33333 22222 44444 11111 33333 22222 44444 11111 33333 22222 44444 11111 33333 22222 44444drop_even, 1
僅輸出奇數(shù)幀,偶數(shù)幀被丟棄,生成半幀速率不變的幀。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 411111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444Output: 11111 33333 11111 33333 11111 33333 11111 33333drop_odd, 2
僅輸出偶數(shù)幀,丟棄奇數(shù)幀,生成半幀速率不變的幀。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 411111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444Output:22222 4444422222 4444422222 4444422222 44444pad, 3
將每個(gè)幀擴(kuò)展到全高,但用黑色填充交替行,以相同的輸入幀速率生成具有雙倍高度的幀。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 411111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444Output: 11111 ..... 33333 ..... ..... 22222 ..... 44444 11111 ..... 33333 ..... ..... 22222 ..... 44444 11111 ..... 33333 ..... ..... 22222 ..... 44444 11111 ..... 33333 ..... ..... 22222 ..... 44444interleave_top, 4
將奇數(shù)幀的上場(chǎng)與偶數(shù)幀的下場(chǎng)交錯(cuò),生成半幀率不變的幀。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 411111<- 22222 33333<- 44444 11111 22222<- 33333 44444<- 11111<- 22222 33333<- 44444 11111 22222<- 33333 44444<-Output: 11111 33333 22222 44444 11111 33333 22222 44444interleave_bottom, 5
將奇數(shù)幀的下部場(chǎng)與偶數(shù)幀的上部場(chǎng)交織,生成半幀速率不變的幀。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 411111 22222<- 33333 44444<- 11111<- 22222 33333<- 44444 11111 22222<- 33333 44444<- 11111<- 22222 33333<- 44444Output: 22222 44444 11111 33333 22222 44444 11111 33333interlacex2, 6
雙幀速率,高度不變。 插入幀,每個(gè)幀包含來(lái)自前一輸入幀的第二時(shí)間字段和來(lái)自下一輸入幀的第一時(shí)間字段。 此模式依賴(lài)于top_field_first標(biāo)志。 對(duì)于沒(méi)有字段同步的隔行掃描視頻顯示很有用。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 411111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444Output: 11111 22222 22222 33333 33333 44444 44444 11111 11111 22222 22222 33333 33333 44444 11111 22222 22222 33333 33333 44444 44444 11111 11111 22222 22222 33333 33333 44444mergex2, 7
將奇數(shù)幀移動(dòng)到上部字段,甚至移動(dòng)到下部字段,以相同的幀速率生成雙倍高度的幀。
------> time Input: Frame 1 Frame 2 Frame 3 Frame 411111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444 11111 22222 33333 44444Output: 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444 11111 33333 33333 55555 22222 22222 44444 44444不推薦使用數(shù)字值,但出于向后兼容性原因,將接受這些值。
合并默認(rèn)模式。
flags指定影響過(guò)濾器進(jìn)程的標(biāo)志。
標(biāo)志的可用值是:
low_pass_filter,vlfp在濾波器中啟用線性垂直低通濾波。 從包含高頻垂直細(xì)節(jié)的漸進(jìn)源創(chuàng)建隔行目標(biāo)時(shí),需要垂直低通濾波。 過(guò)濾將減少交錯(cuò)'twitter'和莫爾圖案。
complex_filter,cvlfp啟用復(fù)雜的垂直低通濾波。 這將略微減少交織’twitter’和莫爾圖案,但更好地保留細(xì)節(jié)和主觀銳度印象。
垂直低通濾波只能用于'mode'interleave_top和interleave_bottom。
29.175 tonemap
來(lái)自不同動(dòng)態(tài)范圍的色調(diào)圖顏色。
此過(guò)濾器需要單精度浮點(diǎn)數(shù)據(jù),因?yàn)樗枰獙?duì)(并且可以輸出)超出范圍的值進(jìn)行操作。 需要另一個(gè)過(guò)濾器(如zscale)將結(jié)果幀轉(zhuǎn)換為可用格式。
實(shí)現(xiàn)的色調(diào)映射算法僅適用于線性光,因此輸入數(shù)據(jù)應(yīng)預(yù)先線性化(并且可能正確標(biāo)記)。
ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT29.175.1 選項(xiàng)
過(guò)濾器接受以下選項(xiàng)。
tonemap設(shè)置要使用的色調(diào)映射算法。
可能的值如下:
| none | 不要應(yīng)用任何色調(diào)映射,只能去飽和過(guò)亮像素 |
| clip | 硬剪輯任何超出范圍的值。 使用它可以獲得范圍內(nèi)值的完美顏色精度,同時(shí)扭曲超出范圍的值 |
| linear | 將整個(gè)參考色域拉伸到顯示器的線性倍數(shù) |
| gamma | 在色調(diào)曲線之間進(jìn)行對(duì)數(shù)轉(zhuǎn)換 |
| reinhard | 使用非線性對(duì)比度,通過(guò)簡(jiǎn)單的曲線保持整體圖像亮度,從而使細(xì)節(jié)變平并降低色彩精度 |
| hable | 比reinhard更好地保留黑暗和明亮的細(xì)節(jié),代價(jià)是略微變暗一切。 當(dāng)細(xì)節(jié)保存比顏色和亮度準(zhǔn)確性更重要時(shí)使用它 |
| mobius | 平滑地繪制超出范圍的值,同時(shí)盡可能保留范圍內(nèi)材料的對(duì)比度和顏色。 當(dāng)顏色準(zhǔn)確性比細(xì)節(jié)保存更重要時(shí)使用它 |
默認(rèn)值是:none。
param調(diào)整色調(diào)映射算法。
這會(huì)影響以下算法:
| none | 忽視 |
| linear | 指定拉伸時(shí)使用的比例因子。 默認(rèn)為1.0 |
| gamma | 指定函數(shù)的指數(shù)。 默認(rèn)為1.8 |
| clip | 指定一個(gè)額外的線性系數(shù),在剪切前乘以信號(hào)。 默認(rèn)為1.0 |
| reinhard | 在顯示峰值處指定局部對(duì)比度系數(shù)。 默認(rèn)為0.5,這意味著色域內(nèi)值約為剪切時(shí)的一半 |
| hable | 忽視 |
| mobius | 指定從線性到mobius變換的過(guò)渡點(diǎn)。 低于此點(diǎn)的每個(gè)值都保證以1:1映射。 值越高,結(jié)果越準(zhǔn)確,代價(jià)是丟失明亮的細(xì)節(jié)。 默認(rèn)為0.3,由于陡峭的初始斜率仍然相當(dāng)準(zhǔn)確地保留了范圍內(nèi)的顏色 |
對(duì)超過(guò)此亮度級(jí)別的高光應(yīng)用去飽和度。 參數(shù)越高,保留的顏色信息就越多。 此設(shè)置有助于防止超高光的不自然地被吹掉的顏色,通過(guò)(平滑地)變成白色。 這使得圖像感覺(jué)更自然,但代價(jià)是減少了關(guān)于超出范圍顏色的信息。
默認(rèn)值2.0有點(diǎn)保守,主要適用于天空或直接陽(yáng)光照射的表面。 設(shè)置為0.0將禁用此選項(xiàng)。
僅當(dāng)輸入框架具有受支持的顏色標(biāo)記時(shí),此選項(xiàng)才有效。
peak使用此值覆蓋signal/nominal/reference峰值。 當(dāng)顯示元數(shù)據(jù)中的嵌入峰值信息不可靠或者從較低范圍到較高范圍的色調(diào)映射時(shí)有用。
29.176 transpose
在輸入視頻中轉(zhuǎn)置包含列的行,并可選擇將其翻轉(zhuǎn)。
它接受以下參數(shù):
dir指定轉(zhuǎn)置方向。
可以假設(shè)以下值:
0, 4, cclock_flip??逆時(shí)針旋轉(zhuǎn)90度并垂直翻轉(zhuǎn)(默認(rèn)),即:
????L.R L.l
????. . -> . .
????l.r R.r
??順時(shí)針旋轉(zhuǎn)90度,即:
????L.R l.L
????. . -> . .
????l.r r.R
??逆時(shí)針旋轉(zhuǎn)90度,即:
????L.R R.r
????. . -> . .
????l.r L.l
??順時(shí)針和垂直翻轉(zhuǎn)旋轉(zhuǎn)90度,即:
????L.R r.R
????. . -> . .
????l.r l.L
對(duì)于介于4-7之間的值,僅在輸入視頻幾何體為縱向而非橫向時(shí)才進(jìn)行換位。 不推薦使用這些值,而應(yīng)使用passthrough選項(xiàng)。
不推薦使用數(shù)值,應(yīng)該刪除它們以支持符號(hào)常量。
passthrough如果輸入幾何與指定值指定的幾何匹配,則不應(yīng)用轉(zhuǎn)置。 它接受以下值:
none始終應(yīng)用換位。
portrait保留縱向幾何體(當(dāng)高度>=寬度時(shí))。
landscape保留橫向幾何體(當(dāng)寬度>=高度時(shí))。
默認(rèn)值為none。
例如,順時(shí)針旋轉(zhuǎn)90度并保留縱向布局:
transpose=dir=1:passthrough=portrait上面的命令也可以指定為:
transpose=1:portrait29.177 trim
修剪輸入,使輸出包含輸入的一個(gè)連續(xù)子部分。
它接受以下參數(shù):
start指定保留部分的開(kāi)始時(shí)間,即具有時(shí)間戳開(kāi)始的幀將是輸出中的第一幀。
end指定將被丟棄的第一幀的時(shí)間,即緊接在具有時(shí)間戳結(jié)束的幀之前的幀將是輸出中的最后一幀。
start_pts這與start相同,但此選項(xiàng)以時(shí)基單位而不是秒為單位設(shè)置開(kāi)始時(shí)間戳。
end_pts這與end相同,但此選項(xiàng)以時(shí)基單位而不是秒為單位設(shè)置結(jié)束時(shí)間戳。
duration輸出的最大持續(xù)時(shí)間(以秒為單位)。
start_frame應(yīng)傳遞給輸出的第一幀的編號(hào)。
end_frame應(yīng)刪除的第一幀的編號(hào)。
'start','end'和'duration'表示為持續(xù)時(shí)間規(guī)范;請(qǐng)參閱(ffmpeg-utils)接受語(yǔ)法的持續(xù)時(shí)間語(yǔ)法。
請(qǐng)注意,前兩組開(kāi)始/結(jié)束選項(xiàng)和'duration'選項(xiàng)查看幀時(shí)間戳,而_frame變體只計(jì)算通過(guò)過(guò)濾器的幀。另請(qǐng)注意,此過(guò)濾器不會(huì)修改時(shí)間戳。如果希望輸出時(shí)間戳從零開(kāi)始,請(qǐng)?jiān)谛藜魹V波器后插入一個(gè)setpts過(guò)濾器。
如果設(shè)置了多個(gè)開(kāi)始或結(jié)束選項(xiàng),則此過(guò)濾器會(huì)嘗試貪婪并保留與至少一個(gè)指定約束匹配的所有幀。要僅保留一次匹配所有約束的零件,請(qǐng)鏈接多個(gè)修剪過(guò)濾器。
默認(rèn)值是保留所有輸入。所以可以設(shè)置例如只是最終值,以保持指定時(shí)間之前的一切。
例子:
-
刪除除輸入的第二分鐘以外的所有內(nèi)容:
ffmpeg -i INPUT -vf trim=60:120 -
只保留第一秒:
ffmpeg -i INPUT -vf trim=duration=1
29.178 unpremultiply
使用第二個(gè)流的第一個(gè)平面作為alpha,將alpha不成倍增效應(yīng)應(yīng)用于輸入視頻流。
兩個(gè)流必須具有相同的尺寸和相同的像素格式。
過(guò)濾器接受以下選項(xiàng):
planes設(shè)置要處理的平面,將復(fù)制未處理的平面。 默認(rèn)值為0xf,將處理所有平面。
如果格式有1或2個(gè)分量,則亮度為0。如果格式有3或4個(gè)分量:對(duì)于RGB格式,位0為綠色,位1為藍(lán)色,位2為紅色; 對(duì)于YUV格式,位0是亮度,位1是色度-U,位2是色度-V。 如果存在,alpha通道始終是最后一位。
inplace不需要第二個(gè)輸入進(jìn)行處理,而是使用輸入流中的alpha平面。
29.179 unsharp
銳化或模糊輸入視頻。
它接受以下參數(shù):
luma_msize_x,lx設(shè)置亮度矩陣水平尺寸。它必須是3到23之間的奇數(shù)。默認(rèn)值為5。
luma_msize_y,ly設(shè)置亮度矩陣垂直大小。它必須是3到23之間的奇數(shù)。默認(rèn)值為5。
luma_amount,la設(shè)置亮度效果強(qiáng)度。它必須是浮點(diǎn)數(shù),合理的值介于-1.5和1.5之間。
負(fù)值會(huì)使輸入視頻模糊,而正值會(huì)使其銳化,零值將禁用效果。
默認(rèn)值為1.0。
chroma_msize_x,cx設(shè)置色度矩陣水平尺寸。它必須是3到23之間的奇數(shù)。默認(rèn)值為5。
chroma_msize_y,cy設(shè)置色度矩陣垂直大小。它必須是3到23之間的奇數(shù)。默認(rèn)值為5。
chroma_amount,ca設(shè)置色度效果強(qiáng)度。它必須是浮點(diǎn)數(shù),合理的值介于-1.5和1.5之間。
負(fù)值會(huì)使輸入視頻模糊,而正值會(huì)使其銳化,零值將禁用效果。
默認(rèn)值為0.0。
所有參數(shù)都是可選的,默認(rèn)為字符串'5:5:1.0:5:5:0.0'的等效值。
29.179.1 示例
-
應(yīng)用強(qiáng)烈的亮度銳化效果:
unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5 -
應(yīng)用亮度和色度參數(shù)的強(qiáng)烈模糊:
unsharp=7:7:-2:7:7:-2
總結(jié)
以上是生活随笔為你收集整理的FFplay文档解读-43-视频过滤器十八的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android实现通过浏览器点击链接打开
- 下一篇: 连接到linux桌面,widows 远程