表示上游節(jié)點的傳出邊緣;可以用來創(chuàng)建更多的下游節(jié)點。
我們提供的服務有:網站建設、做網站、微信公眾號開發(fā)、網站優(yōu)化、網站認證、大城ssl等。為上千家企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的大城網站制作公司
輸入文件 URL (ffmpeg -i option)
在一個 ffmpeg 命令行中包含所有給定的輸出
輸出文件地址
不詢問就覆蓋輸出文件(ffmpeg -y 選項)
在指定文件上運行 ffprobe 并返回輸出的 JSON 表示。
構建用于調用 ffmpeg 的命令行。
構建要傳遞給 ffmpeg 的命令行參數(shù)。
為提供的節(jié)點圖調用 ffmpeg 。
參數(shù)
為提供的節(jié)點圖異步調用 ffmpeg。
參數(shù)
例子
運行和流式輸入:
運行并捕獲輸出:
使用 numpy 逐幀處理視頻:
通過重新混合顏色通道來調整視頻輸入幀。
連接音頻和視頻流,將它們一個接一個地連接在一起。
篩選器適用于同步視頻和音頻流的片段。所有段必須具有每種類型的相同數(shù)量的流,這也是輸出時的流數(shù)。
參數(shù)
裁剪輸入視頻。
參數(shù)
在輸入圖像上繪制一個彩色框。
參數(shù)
使用 libfreetype 庫從視頻頂部的指定文件中繪制文本字符串或文本。
要啟用此過濾器的編譯,您需要使用 --enable-libfreetype . 要啟用默認字體回退和字體選項,您需要使用 --enable-libfontconfig . 要啟用 text_shaping 選項,您需要使用 --enable-libfribidi
參數(shù)
· box - 用于使用背景顏色在文本周圍繪制一個框。該值必須是 1(啟用)或 0(禁用)??虻哪J值為 0。
· boxborderw – 使用 boxcolor 設置要在框周圍繪制的邊框寬度。boxborderw 的默認值為 0。
· boxcolor - 用于在文本周圍繪制框的顏色。有關此選項的語法,請查看 ffmpeg-utils 手冊中的“顏色”部分。 boxcolor 的默認值為“white”。
· line_spacing – 使用 box 設置要在框周圍繪制的邊框的行間距(以像素為單位)。line_spacing 的默認值為 0。
· borderw – 使用邊框顏色設置要在文本周圍繪制的邊框寬度。邊框的默認值為 0。
· bordercolor – 設置用于在文本周圍繪制邊框的顏色。有關此選項的語法,請查看 ffmpeg-utils 手冊中的“顏色”部分。邊框顏色的默認值為“黑色”。
· 擴展- 選擇文本的擴展方式??梢允?none、strftime(已棄用)或 normal(默認)。有關詳細信息,請參閱下面的文本擴展部分。
· basetime – 設置計數(shù)的開始時間。值以微秒為單位。僅適用于已棄用的 strftime 擴展模式。要在正常擴展模式下進行模擬,請使用 pts 函數(shù),提供開始時間(以秒為單位)作為第二個參數(shù)。
· fix_bounds - 如果為 true,檢查并修復文本坐標以避免剪切。
· fontcolor - 用于繪制字體的顏色。有關此選項的語法,請查看 ffmpeg-utils 手冊中的“顏色”部分。fontcolor 的默認值為“黑色”。
· fontcolor_expr – 與文本相同的擴展字符串以獲得動態(tài)字體顏色值。默認情況下,此選項具有空值并且不被處理。設置此選項時,它會覆蓋 fontcolor 選項。
· font - 用于繪制文本的字體系列。默認情況下無。
· fontfile – 用于繪制文本的字體文件。必須包含路徑。如果禁用了 fontconfig 支持,則此參數(shù)是必需的。
· alpha – 繪制應用 alpha 混合的文本。該值可以是介于 0.0 和 1.0 之間的數(shù)字。該表達式也接受相同的變量 x、y。默認值為 1。請參閱 fontcolor_expr。
· fontsize – 用于繪制文本的字體大小。字體大小的默認值為 16。
· text_shaping – 如果設置為 1,則在繪制文本之前嘗試對文本進行整形(例如,反轉從右到左文本的順序并加入阿拉伯字符)。否則,只需按照給定的方式繪制文本。默認為 1(如果支持)。
· ft_load_flags –用于加載字體的標志。這些標志映射了 libfreetype 支持的相應標志,并且是以下值的組合:
默認值為“默認”。有關更多信息,請參閱 FT_LOAD_* libfreetype 標志的文檔。
· shadowcolor – 用于在已繪制文本后面繪制陰影的顏色。有關此選項的語法,請查看 ffmpeg-utils 手冊中的“顏色”部分。shadowcolor 的默認值為“黑色”。
· shadowx – 文本陰影位置相對于文本位置的 x 偏移量。它可以是正值或負值。默認值為“0”。
· shadowy – 文本陰影位置相對于文本位置的 y 偏移量。它可以是正值或負值。默認值為“0”。
· start_number – n/frame_num 變量的起始幀號。默認值為“0”。
· tabsize - 用于呈現(xiàn)選項卡的空格數(shù)大小。默認值為 4。
· timecode – 以“hh:mm:ss[:;.]ff”格式設置初始時間碼表示。它可以帶或不帶文本參數(shù)使用。必須指定 timecode_rate 選項。
· rate – 設置時間碼幀率(僅限時間碼)。
· timecode_rate – 的別名rate。
· r – 的別名rate。
· tc24hmax – 如果設置為 1,時間碼選項的輸出將在 24 小時左右回繞。默認值為 0(禁用)。
· text -- 要繪制的文本字符串。文本必須是 UTF-8 編碼字符序列。如果沒有使用參數(shù) textfile 指定文件,則此參數(shù)是必需的。
· textfile – 包含要繪制的文本的文本文件。文本必須是 UTF-8 編碼字符序列。如果沒有使用參數(shù) text 指定文本字符串,則此參數(shù)是必需的。如果同時指定了 text 和 textfile,則會引發(fā)錯誤。
· reload – 如果設置為 1,文本文件將在每一幀之前重新加載。一定要自動更新它,否則它可能會被部分讀取,甚至失敗。
· x – 指定將在視頻幀內繪制文本的偏移量的表達式。它相對于輸出圖像的左邊框。默認值為“0”。
· y - 指定將在視頻幀內繪制文本的偏移量的表達式。它相對于輸出圖像的上邊框。默認值為“0”。有關接受的常量和函數(shù)的列表,請參見下文。
表達式常量:
x 和 y 的參數(shù)是包含以下常量和函數(shù)的表達式:
· dar:輸入顯示縱橫比,同 (w / h) * sar
· hsub:水平色度子樣本值。例如,對于像素格式“yuv422p”,hsub 為 2,vsub 為 1。
· vsub:垂直色度子樣本值。例如,對于像素格式“yuv422p”,hsub 為 2,vsub 為 1。
· line_h:每個文本行的高度
· lh:別名為line_h.
· main_h:輸入高度
· h: 的別名main_h。
· H: 的別名main_h。
· main_w:輸入寬度
· w: 的別名main_w。
· W: 的別名main_w。
· ascent:對于所有渲染的字形,從基線到用于放置字形輪廓點的最高/上網格坐標的最大距離。這是一個正值,因為網格的 Y 軸向上。
· max_glyph_a: 的別名ascent。
· 下降:對于所有渲染的字形,從基線到用于放置字形輪廓點的最低網格坐標的最大距離。由于網格的方向,這是一個負值,Y 軸向上。
· max_glyph_d: 的別名descent。
· max_glyph_h:最大字形高度,即渲染文本中包含的所有字形的最大高度,相當于上升-下降。
· max_glyph_w:最大字形寬度,即渲染文本中包含的所有字形的最大寬度。
· n:輸入幀數(shù),從0開始
· rand(min, max):返回一個包含在 min 和 max 之間的隨機數(shù)
· sar:輸入樣本縱橫比。
· t:時間戳,以秒為單位,如果輸入時間戳未知,則為 NAN
· text_h:渲染文本的高度
· th: 的別名text_h。
· text_w:渲染文本的寬度
· tw: 的別名text_w。
· x:繪制文本的 x 偏移坐標。
· y:繪制文本的 y 偏移坐標。
這些參數(shù)允許 x 和 y 表達式相互引用,因此您可以例如指定 y=x/dar.
應用自定義過濾器。
filter通常由更高級別的過濾器函數(shù)使用,例如 hflip ,但如果缺少過濾器實現(xiàn) ffmpeg-python ,您可以 filter 直接調用以 ffmpeg-python 將過濾器名稱和參數(shù)逐字傳遞給 ffmpeg 。
參數(shù)
函數(shù)名稱后綴_是為了避免與標準 pythonfilter 函數(shù)混淆。
例子
替代名稱 filter ,以免與內置的 pythonfilter 運算符沖突。
應用具有一個或多個輸出的自定義過濾器。
這 filter 與過濾器可以產生多個輸出相同。
要引用輸出流,請使用 .stream 運算符或括號簡寫:
例子
水平翻轉輸入視頻。
修改輸入的色調和/或飽和度。
參數(shù)
將一個視頻疊加在另一個視頻之上。
參數(shù)
更改輸入幀的 PTS(表示時間戳)。
FFmpeg里有兩種時間戳:DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp)。 顧名思義,前者是解碼的時間,后者是顯示的時間。
參數(shù)
修剪輸入,使輸出包含輸入的一個連續(xù)子部分。
參數(shù)
垂直翻轉輸入視頻。
應用縮放和平移效果。
參數(shù)
Python解釋器內置了許多函數(shù),這意味著我們無需定義,始終可以它們。下面按照函數(shù)的字母順序,討論一些常用的內建函數(shù)。
eval()
eval()函數(shù)解析傳給它的表達式,并在程序中運行Python表達式(代碼)。舉個例子:
x?=?1
eval("x?+?1")??#?注意:"x?+?1"是字符串
2
eval("4??9")
True
eval("'py'?*?3")
'pypypy'
eval("10?**?2")
100
eval()函數(shù)不僅僅能運行簡單表達式,還能調用函數(shù),使用方法等等:
eval("abs(-11)")????????#?計算-11的絕對值
11
eval('"hello".upper()')???#?把字符串'hello'全變成大寫字母
'HELLO'
import?os
eval('os.getcwd()')???????#?獲取當前的工作目錄
'/home/thepythonguru'
但是需要注意的是eval()僅適用于表達式,嘗試傳遞語句會導致語法錯誤:
eval('a?=?1')????????????????????#?賦值語句
Traceback?(most?recent?call?last):
File?"",?line?1,?in
File?"",?line?1
a?=?1
^
SyntaxError:?invalid?syntax
eval('import?re')?????????????#?導入語句
Traceback?(most?recent?call?last):
File?"",?line?1,?in
File?"",?line?1
import?re
^
SyntaxError:?invalid?syntax
此外,使用eval()語句應該十分小心,永遠不要將不受信任的源直接傳遞給eval()。 因為惡意用戶很容易對您的系統(tǒng)造成破壞。 例如:
eval(input())??#?eval()將執(zhí)行用戶輸入的代碼
用戶輸入以下代碼就能從系統(tǒng)中刪除所有文件:
os.system("RM?-RF?/")
#?上面輸入相當于執(zhí)行:
eval('os.system("RM?-RF?/")')
filter()
"filter"的意思是“過濾”,filter()函數(shù)需要兩個參數(shù):一個函數(shù)對象和一個可迭代對象。函數(shù)對象需要返回一個布爾值,并為可迭代的每個元素調用。 filter()函數(shù)僅返回那些通過函數(shù)對象返回值為true的元素。解釋有一些抽象,看一個例子:
a?=?[1,?2,?3,?4,?5,?6]
filter(lambda?x?:?x?%?2?==?0,?a)????????#?過濾出所有偶數(shù),結果返回一個filter對象
filter?object?at?0x1036dc048
list(filter(lambda?x?:?x?%?2?==?0,?a))??#?可以使用list()函數(shù)使fileter對象變成列表,方便查看結果
[2,?4,?6]
下面是另外一個例子:
dict_a?=?[{'name':?'python',?'points':?10},?{'name':?'java',?'points':?8}]
filter(lambda?x?:?x['name']?==?'python',?dict_a)??#?過濾出列表中鍵'name'為值'python'的字典
filter?object?at?0x1036de128
tuple(filter(lambda?x?:?x['name']?==?'python',?dict_a))??#?使用tuple()函數(shù)使結果變成字典
({'name':?'python',?'points':?10},)
float()
float()的參數(shù)是一個數(shù)字或者字符串,它返回一個浮點數(shù)。如果參數(shù)是字符串,則字符串中應該包含一個數(shù)字,并可以在數(shù)字前加入一個 '-' 符號,代表負數(shù)。參數(shù)也可以是表示NaN(非數(shù)字)或正無窮大的字符串。如果沒有任何參數(shù)的話,將返回0.0。
float('+1.23')?????????#?1.23
1.23
float('???-12345\n')???#?-12345
-12345.0
float('1e-003')????????#?0.001
0.001
float('+1E6')??????????#?10的6次冪
1000000.0
float('-Infinity')?????#?無窮小
-inf
float('-inf')?+?100?????#?負無窮小加100仍等于負無窮小
-inf
float('inf')???????????#?無窮大
inf
float('NaN')???????????#?NaN,代表非數(shù)字
nan
關于Python的基礎問題可以看下這個網頁的視頻教程,網頁鏈接,希望我的回答能幫到你。
過濾器第二個參數(shù)可以是生成器也可以是列表,只要是iterable就可以,生成器也是一個iterable。
next()得到的是iterable的一個結果值。
過濾器返回的是一個map,map本身也是一個iterable,可以使用next()或者for去迭代它。
filter()在迭代的時候逐個返回值,與生成器類似,都是在每次調取值時才算出一個來。
當然是函數(shù)式那一套黑魔法啦,且聽我細細道來。 lambda表達式也就是匿名函數(shù)。用法:lambda 參數(shù)列表 : 返回值例: +1函數(shù) f=lambda x:x+1 max函數(shù)(條件語句的寫法如下) f_max=lambda x,y:x if xy else y 上述定義的函數(shù)與用def定義的函數(shù)沒有區(qū)別,而且左邊的f=在某些情況下并不是必要的。 filter,map,reduce filter函數(shù)接受兩個參數(shù),第一個是過濾函數(shù),第二個是可遍歷的對象,用于選擇出所有滿足過濾條件的元素,不同版本的filter的返回值稍有區(qū)別,我用的是python3.5,filter返回的是經過過濾的可遍歷對象。例:去除小寫字母 s=filter(lambda x:not str(x).islower(),"asdasfAsfBsdfC") for ch in s: print(ch) map函數(shù)接受的參數(shù)類型與filter類似,它用于把函數(shù)作用于可遍歷對象的每一個元素。類似于數(shù)學中映射的概念。例:求y=2x+1(偷偷用了一下range函數(shù)生成定義域) s=map(lambda x:2*x+1,range(6)) for x in s: print(x) reduce函數(shù)對每個元素作累計操作,它接受的第一個參數(shù)必須是有兩個參數(shù)的函數(shù)。例:求和 from functools import reduce s=reduce(lambda x,y:x+y,range(1,6)) print(s) 求乘積(第三個可選參數(shù)表示累計變量的初值) from functools import reduce s=reduce(lambda x,y:x*y,range(1,6),1) print(s) 柯里化(curry)函數(shù)如果一個函數(shù)需要2個參數(shù),而你只傳入一個參數(shù),那么你就可以得到一個柯里化的函數(shù),這是函數(shù)式編程語言的重要特性之一,遺憾的是,python并不能在語法層面支持柯里化調用,但它在庫中提供了接口。例: *3函數(shù) f_mul=lambda x,y:x*y from functools import partial mul3=partial(f_mul,3) print(mul3(1)) print(mul3(6)) 打包與解包有點類似于函數(shù)式中的模式匹配,略牽強。 t=(1,2,3) x,y,z=t 列表生成式這個也有點牽強,不知道嚴格意義上講屬不屬于函數(shù)式風格。例:生成奇數(shù)序列 l=[2*x+1 for x in range(10)] for i in l: print(i) 最后來一個彩蛋(以前某答主提到的用調分函數(shù)來美顏的算法,忘了出處了,侵刪) from PIL import Image from math import sqrt im = Image.open("a.jpg") ret= im.convert(mode="RGB") ret = ret.point(lambda x:sqrt(x)*sqrt(255)) ret.save("b.jpg")
filter 方法可以返回原始對象的子集.
例如,我們想提取分組內的和大于 3 的所有分組的元素
filter 的參數(shù)必須是一個函數(shù),函數(shù)參數(shù)是每個分組,并且返回 True 或 False
例如,提取元素個數(shù)大于 2 的分組
另外,我們也可以過濾掉不滿足條件的組,而是返回一個類似索引對象。在這個對象中,沒有通過的分組的元素被 NaN 填充
對于具有多列的 DataFrames ,過濾器應明確指定一列作為過濾條件
在進行聚合或轉換時,你可能想對每個分組調用一個實例方法,例如
但是,如果需要傳遞額外的參數(shù)時,它會變得很冗長。我們可以直接使用分派到組對象上的方法
實際上這生成了一個函數(shù)包裝器,在調用時,它接受所有傳遞的參數(shù),并在每個分組上進行調用。
然后,這個結果可以和 agg 和 transform 結合在一起使用
在上面的例子中,我們按照年份分組,然后對每個分組中使用 fillna 補缺失值
nlargest 和 nsmallest 可以在 Series 類型的 groupby 上使用
對分組數(shù)據(jù)的某些操作可能并不適合聚合或轉換。或者說,你可能只是想讓 GroupBy 來推斷如何合并結果
我們可以使用 apply 函數(shù),例如
改變返回結果的維度
在 Series 上使用 apply 類似
對于之前的示例數(shù)據(jù)
假設,我們想按 A 分組并計算組內的標準差,但是 B 列的數(shù)據(jù)我們并不關心。
如果我們的函數(shù)不能應用于某些列,則會隱式的刪除這些列,所以
直接計算標準差并不會報錯
可以使用分類變量進行分組,分組的順序會按照分類變量的順序
可以使用 pd.Grouper 控制分組,對于如下數(shù)據(jù)
可以按照一定的頻率對特定列進行分組,就像重抽樣一樣
可以分別對列或索引進行分組
類似于 Series 和 DataFrame ,可以使用 head 和 tail 獲取分組前后幾行
在 Series 或 DataFrame 中可以使用 nth() 來獲取第 n 個元素,也可以用于獲取每個分組的某一行
如果你要選擇非空項,可以使用關鍵字參數(shù) dropna ,如果是 DataFrame ,需要指定為 any 或 all (類似于 DataFrame.dropna(how='any|all') )
與其他方法一樣,使用 as_index=False 分組名將不會作為索引
你也可以傳入一個整數(shù)列表,一次性選取多行
使用 cumcount 方法,可以查看每行在分組中出現(xiàn)的順序
可以使用 ngroup() 查看分組的順序,該順序與 cumcount 的順序相反。
注意 :該順序與迭代時的分組順序一樣,并不是第一次觀測到的順序
下面的是網絡上找到的python的布隆過濾器的實現(xiàn).
#!/usr/local/bin/python2.7
#coding=gbk
'''
Created?on?2012-11-7
@author:?palydawn
'''
import?cmath
from?BitVector?import?BitVector
class?BloomFilter(object):
def?__init__(self,?error_rate,?elementNum):
#計算所需要的bit數(shù)
self.bit_num?=?-1?*?elementNum?*?cmath.log(error_rate)?/?(cmath.log(2.0)?*?cmath.log(2.0))
#四字節(jié)對齊
self.bit_num?=?self.align_4byte(self.bit_num.real)
#分配內存
self.bit_array?=?BitVector(size=self.bit_num)
#計算hash函數(shù)個數(shù)
self.hash_num?=?cmath.log(2)?*?self.bit_num?/?elementNum
self.hash_num?=?self.hash_num.real
#向上取整
self.hash_num?=?int(self.hash_num)?+?1
#產生hash函數(shù)種子
self.hash_seeds?=?self.generate_hashseeds(self.hash_num)
def?insert_element(self,?element):
for?seed?in?self.hash_seeds:
hash_val?=?self.hash_element(element,?seed)
#取絕對值
hash_val?=?abs(hash_val)
#取模,防越界
hash_val?=?hash_val?%?self.bit_num
#設置相應的比特位
self.bit_array[hash_val]?=?1
#檢查元素是否存在,存在返回true,否則返回false?
def?is_element_exist(self,?element):
for?seed?in?self.hash_seeds:
hash_val?=?self.hash_element(element,?seed)
#取絕對值
hash_val?=?abs(hash_val)
#取模,防越界
hash_val?=?hash_val?%?self.bit_num
#查看值
if?self.bit_array[hash_val]?==?0:
return?False
return?True
#內存對齊????
def?align_4byte(self,?bit_num):
num?=?int(bit_num?/?32)
num?=?32?*?(num?+?1)
return?num
#產生hash函數(shù)種子,hash_num個素數(shù)
def?generate_hashseeds(self,?hash_num):
count?=?0
#連續(xù)兩個種子的最小差值
gap?=?50
#初始化hash種子為0
hash_seeds?=?[]
for?index?in?xrange(hash_num):
hash_seeds.append(0)
for?index?in?xrange(10,?10000):
max_num?=?int(cmath.sqrt(1.0?*?index).real)
flag?=?1
for?num?in?xrange(2,?max_num):
if?index?%?num?==?0:
flag?=?0
break
if?flag?==?1:
#連續(xù)兩個hash種子的差值要大才行
if?count??0?and?(index?-?hash_seeds[count?-?1])??gap:
continue
hash_seeds[count]?=?index
count?=?count?+?1
if?count?==?hash_num:
break
return?hash_seeds
def?hash_element(self,?element,?seed):
hash_val?=?1
for?ch?in?str(element):
chval?=?ord(ch)
hash_val?=?hash_val?*?seed?+?chval
return?hash_val
'''
#測試代碼
bf?=?BloomFilter(0.001,?1000000)
element?=?'palydawn'
bf.insert_element(element)
print?bf.is_element_exist('palydawn')'''
#其中使用了BitVector庫,python本身的二進制操作看起來很麻煩,這個就簡單多了
如果解決了您的問題請采納!
如果未解決請繼續(xù)追問