38 視頻源
下面是當前有效的視頻源
buffer
緩沖視頻幀,其可以作為濾鏡鏈圖的環節
它通常用于編程,特別是通過libavfilter/vsrc_buffer.h
的接口。
接受如下參數:
-
video_size
指定視頻尺寸,(同時指定width 和 height)。語法同于
ffmpeg-utils
手冊中的視頻尺寸章節。 -
width
輸入視頻寬
-
height
輸入視頻高
-
pix_fmt
像素格式描述,可以是一個表征像素格式的號碼或者名稱
-
time_base
指定時間戳時基
-
frame_rate
指定幀率 stream.
-
pixel_aspect, sar
輸入視頻的像素長寬比。
-
sws_param
指定一個可選參數用于在自動檢測到輸入視頻大小或者格式變化時插入放縮濾鏡。
例如:
buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
其指定源為320x240
分辨率,采樣yuv410p
的像素格式,時基為1/24秒,采樣1:1的像素比。因為yuv410p
對應的像素格式序號為6
(libavutil/pixfmt.h
中的AVPixelFormat
枚舉中定義),所以上面又等效于
buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
另外,選項可以字符串(以‘:’分隔)直接指定(沒有選項名,按順序給選項賦值(下面介紹選項的順序)),但不建議使用這個語法:
width:height:pix_fmt:time_base.num:time_base.den:pixel_aspect.num:pixel_aspect.den[:sws_param]
cellauto
創建一個模式生成的細胞自動發生器(就是細胞變化樣的圖)
細胞自動發送器的初始狀態可以通過filename
選項和pattern
選項的模式來定義,如果不知道則是隨機初始狀態。
每個新幀中的一個新行視頻充滿了下一代細胞自動發生器的結果。當scroll
選項被指定時,整個幀會被滾動填充。
接受如下選項:
-
filename, f
用于讀取細胞自動發生器初始狀態的文件。在文件中第一行從行首開始每個非空字符被認為是活的細胞直到換行,更多行則被忽略
-
pattern, p
用于定義細胞自動發生器初始狀態,從指定字符串開始作為起始行
每個非空字符作為一個細胞直到換行(或者字符串結束),更多的行被忽略
-
rate, r
設置視頻幀率,默認25
-
random_fill_ratio, ratio
設置初始隨機填充率,是浮點數,范圍0-1,默認
1/PHI
此選項在指定了初始文件或模式時被忽略
-
random_seed, seed
設置隨機填充初始種子,必須是整數,范圍0-
UINT32_MAX
。不指定或顯式指定為-1,將嘗試使用一個更好的隨機種子 -
rule
設置細胞自動發生規則,是0-255間數,默認110
-
size, s
設置輸出視頻尺寸,語法同于
ffmpeg-utils
手冊中的視頻尺寸章節。如果
filename
或者pattern
指定了,則尺寸默認為初始化行的寬度width
,高為width * PHI
如果尺寸被設置,其寬必須匹配
pattern
字符串中最大行。如果
filename
和pattern
都沒有指定,則默認為320x518
(用作隨機生成初始化) -
scroll
如果為1,向上滾出已經填滿的行。如果為0 ,到最后一行后,新行將覆蓋第一行,默認為1
-
start_full, full
如果設置為1,則需要完全填滿后才輸出第一幀,這時默認行為,設置為0則禁用
-
stitch
如果設置為1,左和右連接在一起,這是默認行為,為0則禁用
cellauto例子
-
從
pattern
讀取初始化,輸出為 200x400.cellauto=f=pattern:s=200x400
-
隨機化輸出初始化,寬200個細胞,填充率為2/3:
cellauto=ratio=2/3:s=200x200
-
以規則18創建一個由單細胞開始,初始化寬度為100的源:
cellauto=p=@:s=100x400:full=0:rule=18
-
指定一個詳細的初始模式:
cellauto=p='@@ @ @@':s=100x400:full=0:rule=18
mandelbrot
生成一個曼德爾勃特(Mandelbrot)集合分形,它逐漸從點(start_x,start_y)放大
支持下列選項:
-
end_pts
設置終端
pts
值,默認400. -
end_scale
設置終端縮放值,必須是浮點數,默認0.3.
-
inner
設置內部著色模式,該算法用于繪制曼德布洛特分形內部區域.
允許下面的值:
black
設置black模式.
convergence
設置時間收縮模式
mincol
設置基于點的顏色最接近的起源迭代
period
設置時間模式
默認為mincol.
-
bailout
設置bailout值,默認為10
-
maxiter
設置最大迭代執行的渲染算法,默認7189.
-
outer
設置外部著色模式,允許下面的值:
iteration_count
設置為迭代計算模式
normalized_iteration_count
設置為規范化的迭代計算模式
默認為normalized_iteration_count.
-
rate, r
設置幀率,可以是表達式和每秒幀數,默認為25
-
size, s
設置幀尺寸,語法同于
ffmpeg-utils
手冊中的視頻尺寸章節. 默認"640x480". -
start_scale
設置初始化放大值,默認為3.0.
-
start_x
設置初始化點的x坐標,必須是-100 到100間的浮點數,默認為 -0.743643887037158704752191506114774.
-
start_y
設置初始化點的y坐標,必須是-100 到100間的浮點數,默認為-0.131825904205311970493132056385139.
mptestsrc
生成各種測試模式,以作為MPlayer測試濾鏡。
生成視頻是固定的256x256分辨率。這個源用于在特定編碼功能測試
支持下面選項:
-
rate, r
指定幀率,是默認每秒幀數數字。也可以以
frame_rate_num/frame_rate_den
格式設定整數和浮點數以及幀頻短語都是有效值,默認25 -
duration, d
設置持續時間秒數,語法同于持續時間章節,
如果不指定或者指定為負數,表示持續不斷
-
test, t
設置測試項的數字或者名稱,允許下面的值:
dc_luma
dc_chroma
freq_luma
freq_chroma
amp_luma
amp_chroma
cbp
mv
ring1
ring2
all默認為"all",表示都要測試
例如:
mptestsrc=t=dc_luma
將進行dc_luma
測試
frei0r源
提供一個frei0r源
編譯需要frei0r
頭以及配置項--enable-frei0r
,接受如下參數:
-
size
生成視頻大小。語法同于
ffmpeg-utils
手冊中的視頻尺寸章節. -
framerate
設置幀率,值為數字字符串,或者
num/den
形式字符串或者幀率短語 -
filter_name
這個名字frei0r源到負載。獲得有關frei0r的更多信息以及如何設置參數,讀取文檔中的frei0r視頻濾鏡部分。
-
filter_params
由’|’分隔的參數列表傳遞給
frei0r
源
例如:要產生一個200x200分辨率,幀率為10,產生一個frei0r源用作partik0l
frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
life
產生life模式
這個源基于John Conway’s life游戲
源輸入一個網格、每個像素(代表細胞)可以有2個狀態,活或者死。每個細胞有8個鄰國水平、垂直或對角相鄰。
根據采用的規則發展網格,它指定鄰居活細胞的數量會使細胞生存或出生,這里rule
選項在下面介紹。
這個源支持下面的選項:
-
filename, f
設置讀取初始化網格的文件。在文件中每個非空字符代表存活的細胞,換行結束一行。
如果沒有指定則隨機生成
-
rate, r
設置視頻幀率,默認25.
-
random_fill_ratio, ratio
設置隨機初始化隨機網格填充率,值為0-1的浮點數,默認為
1/PHI
,在設置了filename
時忽略 -
random_seed, seed
設置隨機種子,值為0 -
UINT32_MAX
如果設置為-1或者不設置,表示盡量用優化的種子 -
rule
設置規則
規則可以是指定代碼的形式"SNS/BNB",這里
NS
和NB
是0-8的數字序數,NS
在一個存活細胞周圍還存活的細胞數,NB
指定周圍要新生的細胞數,s
和b
分別是S
和B
的替代另外一個規則可以被描述為18位的整數。其中高段9位表示存活細胞周圍存活細胞狀態數,低段9位則為要新生的細胞狀態數。例如數字6153=(12<<9)+9,表示細胞周圍有12個存活細胞,新生為9的規則,其等效于"S23/B03".
默認為"S23/B3",它是原始的Conway’s 游戲規則。如果它周圍有2或者3個細胞將新生細胞,否則將死亡細胞
-
size, s
設置輸出視頻分辨率,語法同于
ffmpeg-utils
手冊中的視頻尺寸章節當
filename
被設定,則默認會采用輸入文件的最大行寬。如果設置了這個值則需與輸入文件相匹配。如果沒有設置
filename
則默認為 "320x240" (用于隨機初始化模式). -
stitch
如果設置為1,則左右網格邊和上下網格邊縫合在一起(連續面),默認為1
-
mold
設置細胞分解速度。如果設置,則為死細胞將從
death_color
在mold
步驟內轉變為mold_color
的速度。范圍0-255。 -
life_color
設置存活的細胞顏色 (或新生)
-
death_color
設置死亡細胞顏色。如果
mold
被設置,則為死亡后第一個顏色 -
mold_color
設置分解后顏色,作為絕對死亡或已被分解的細胞顏色
前面3個顏色選項其語法可同于
ffmpeg-utils
手冊中的視頻尺寸章節
life源例子
-
從模板讀取一個網格,分辨率為300x300:
life=f=pattern:s=300x300
-
填充率2/3的隨機初始化,尺寸200x200, :
life=ratio=2/3:s=200x200
-
指定一個規則的隨機初始化和生成:
life=rule=S14/B34
-
前面所有例子,且還伴有
mold
(分解)效果,在ffplay中播放:ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc
-
color
源提供一致的顏色輸入 -
haldclutsrc
源提供 哈爾德(Hald)CLUT輸入,參考haldclut濾鏡 -
nullsrc
源返回未處理的視頻幀,它主要用于分析/調試調試,或者作為濾鏡中可以忽略的輸入數據 -
rgbtestsrc
源產生RGB
測試模板,用于檢測對比RGB
與BGR
問題,應該可以看到一個紅色、綠色和藍色的從上到下條紋。 -
smptebars
源產生顏色條模板,基于SMPTE Engineering Guideline EG 1-1990
標準 -
smptehdbars
源產生顏色條模板,基于SMPTE RP 219-2002
標準 -
testsrc
源產生測試視頻模板,顯示顏色模板和滾動的梯形以及時間戳。主要用于測試目的。
這些源支持下面一些參數:
-
color, c
指定源顏色,僅作
color
源中有效,語法同于顏色 -
level
指定Hald CLUT的層次。僅在
haldclutsrc
有效S。level
中的N
用于生成一個N*N*N
像素為單位矩陣用于三維查找表。每個組件都是編碼在1 /(N * N)范圍內。 -
size, s
指定源視頻尺寸。語法同于
ffmpeg-utils
手冊中的視頻尺寸章節,默認值為320x240
.這個選項在
haldclutsrc
中無效 -
rate, r
設置幀率,語法同于
ffmpeg-utils
手冊中的視頻幀率章節,默認為25 -
sar
設置樣品長寬比(像素點長寬比)
-
duration, d
設置源視頻持續時間,語法同于持續時間章節.
如果不設置或者設置為負數,表示持續存在。
-
decimals, n
設置屏幕時間戳的小數數字顯示,僅在
testsrc
源有效顯示的時間戳值將對應于原來的時間戳值乘以
10的X次方數
的指定值。默認為0
例如:
testsrc=duration=5.3:size=qcif:rate=10
產生5.3秒的視頻,視頻尺寸是176x144,幀率為10
下面則產生紅色源,有0.2透明度,尺寸為qcif
(176x144),幀率為10
color=c=red@0.2:s=qcif:r=10
如果輸入內容會被忽略,nullsrc
可以被使用,下面的命令通過geq
濾鏡產生飛機飛過水稻的噪音
nullsrc=s=256x256, geq=random(1)*255:128:128
額外命令
color
源還支持下面的命令:
-
c, color
設置顏色來創建一個圖像。其支持的語法同于顏色中的介紹。