《FFmpeg Basics》中文版-13-數(shù)學函數(shù)

寫在前面

如果您對音視頻技術感興趣,可以訂閱我的專題:音視頻專輯
也可以關注我的簡書賬戶: 張芳濤歧匈,我后期會發(fā)布更多的音視頻以及圖像處理方面的文章崎场。

正文

FFmpeg工具提供的一個巨大優(yōu)勢是內(nèi)置的數(shù)學函數(shù)放仗,可以對某些音頻和視頻過濾器留夜、選項和源進行各種修改。

可以使用數(shù)學函數(shù)的表達式

許多FFmpeg選項都需要數(shù)值作為參數(shù)拧咳,其中一些可以是表達式形式象迎,可以包含算術運算符、常量和各種數(shù)學函數(shù)呛踊。函數(shù)通常用于音頻和視頻過濾器和源砾淌,下一個表包含它們的列表,包括在哪里找到它們的描述谭网。

FFmpeg中的算術表達式的評估提供了一個內(nèi)部公式評估器汪厨,通過位于文件libavutil/eval.h中的接口實現(xiàn)。這個評估人員也接受國際系統(tǒng)編號前綴(在FFmpeg文檔中被稱為后綴愉择,因為它們是在數(shù)字之后立即輸入的)劫乱。如果我是在前綴后面加上,使用的是2的冪而不是10的冪锥涕。B(字節(jié))前綴將值乘以8衷戈,并且可以在另一個前綴后附加或單獨使用。這意味著层坠,例如B, KB, MiB可以像前綴一樣使用殖妇。可用的SI數(shù)字前綴的列表在FFmpeg基礎上破花。C代碼中的開發(fā)人員可以擴展一元函數(shù)和二進制函數(shù)的列表谦趣,并定義額外的常量,這些常量將在描述的表達式中可用座每。

名稱 類型 具體描述的章節(jié)
aevalsrc 音頻源 數(shù)字音頻章節(jié)
asettb 音頻過濾器 高級技術章節(jié)
aspect option 詞匯表章節(jié)
astreamsync 音頻過濾器 數(shù)字音頻章節(jié)
boxblur 視頻過濾器 模糊前鹅,銳化和其他去噪章節(jié)
crop 視頻過濾器 裁剪視頻章節(jié)
drawtext 視頻過濾器 為視頻添加文字章節(jié)
hue 視頻過濾器 顏色修正章節(jié)
lut, lutrgb, lutyuv 視頻過濾器 顏色修正章節(jié)
overlay 視頻過濾器 overlay-畫中畫章節(jié)
rc_eq option 格式之間轉換章節(jié)
pad 視頻過濾器 填充視頻章節(jié)
scale 視頻過濾器 調(diào)整和伸縮視頻章節(jié)
select 視頻過濾器 高級技術章節(jié)
setdar, setsar 視頻過濾器 高級技術章節(jié)
setpts 視頻過濾器 時間操作章節(jié)
settb 視頻過濾器 高級技術章節(jié)
volume 音頻過濾器 數(shù)字音頻章節(jié)

內(nèi)置算術運算符

FFmpeg工具的用戶可以使用常用的單目和雙目算術運算符,如下表所述峭梳。

操作符 類型 描述 例子
+ 單目 將負值轉換為正數(shù) +(-3)=3
- 單目 將正數(shù)轉換為負數(shù) -(2+3)=-5
+ 雙目 提供加法操作 4+5=9
- 雙目 提供減法運算 10-6=4
* 雙目 提供乘法運算 4*5=20
/ 雙目 提供除法運算 9/3=3
^ 雙目 提供了一個指數(shù)函數(shù) 10^2=10*10=100

內(nèi)置的常量

最近FFmpeg僅包含下表中描述的3個常量作喘,但開發(fā)人員可以通過修改源代碼來定義附加常量拭嫁。

符號 數(shù)值 描述
PI 3.14159265358979323846 圓周率
E 2.7182818284590452354 自然對數(shù)的底數(shù)莺治,歐拉數(shù)
PHI 1.61803398874989484820 黃金比例,(1 +√6(5)/ 2

PI常數(shù)通常用作三角函數(shù)的正弦牡拇,余弦,正切等參數(shù)挫以。例如者蠕,要產(chǎn)生頻率為523.251 Hz的C5音調(diào)(中音高C)的音調(diào)窃祝,我們可以使用命令(命令里面右括號掐松,我這兒會報語法錯誤)

ffplay -f lavfi -i aevalsrc=sin(523.251*2*PI*t)

我的測試命令:

ffplay -f lavfi -i aevalsrc=sin\(523.251*2*PI*t\)

由于余弦函數(shù)具有相似的周期性踱侣,下一個命令給出了相同的結果:

ffplay -f lavfi -i aevalsrc=cos(523.251*2*PI*t)

內(nèi)置數(shù)學函數(shù)表

如果我們使用2個不同的表達式,并希望將它們組合成另一個表達式大磺,我們可以使用一個符號“expr1;expr2”抡句,其中expr1和expr2依次被計算,新的表達式求出expr2的值杠愧。

當使用函數(shù)來評估表達式為“true”時待榔,如果它們具有非零值,我們可以利用*符號(星號)的工作方式類似于邏輯流济,并且+符號(+)的工作方式類似或锐锣。接下來的兩頁包含F(xiàn)Fmpeg工具中可用函數(shù)的表。

可用的函數(shù)表達式

函數(shù) 描述
abs(x) 計算x的絕對值
acos(x) x的反余弦計算
asin(x) 計算x的反正弦
atan(x) 計算x的反正切
ceil(expr) 將expr擴展到最近的整數(shù)绳瘟,例如ceil(4.5)=5.0
cos(x) 計算cos(x)
cosh(x) 計算雙曲余弦x
eq(x, y) 如果x=y雕憔,則返回1,否則返回0
exp(x) 以e=2.71828182(歐拉數(shù))計算x的指數(shù)
floor(expr) 85/5000
將expr擴展到最近的整數(shù)糖声,例如地板(4.5)=4斤彼,地板(-4.5)=-5
gauss(x) 計算x的高斯函數(shù),對應exp(-xx/2) / sqrt(2PI)
gcd(x, y) 計算x和y的最大公約數(shù)蘸泻,如果x=y=0琉苇,或者如果x<0和y<0,結果是未定義的
gt(x, y) 大于比較悦施,返回1如果x > y并扇,否則返回0
gte(x, y) 大于或等于比較,返回1如果x y抡诞,否則返回0
hypot(x, y) 計算斜邊(直角三角形最長邊)拜马,sqrt(xx + yy)
if(expr1, expr2) 評估expr1,如果結果為非零返回expr1的評估沐绒,否則返回0
ifnot(exp1, exp2) 評估exp1俩莽,如果結果為零,則返回值的評估乔遮,否則返回0
isinf(x) 如果x是+/-∞扮超,則返回1.0,否則返回0
isnan(x) 如果x是NaN(不是數(shù)字)蹋肮,則返回0
ld(var) 使用var標識符返回一個由st(var, expr)函數(shù)設置的內(nèi)部變量值
log(x) 用e=2.71828182(歐拉數(shù))計算x的自然對數(shù)
lt(x, y) 小于比較出刷,返回1如果x < y,否則返回0
lte(x, y) 小于或等于比較,返回1如果x≤y,否則返回0
max(x, y) 計算x和y的最大值
min(x, y) 計算x和y的最小值
mod(x, y) 計算模坯辩,除法x/y的余數(shù)
not(expr) 如果expr為0馁龟,則返回1,否則返回1
pow(x, y) 計算x的值提高到y(tǒng)的力量,結果是相當于(x)^(y)
random(x) 從0.0 - 1.0返回一個偽隨機數(shù)漆魔,x是用于保存種子/狀態(tài)的內(nèi)部變量的索引
root(expr, max) 在區(qū)間0中找到f(x)=0的地方坷檩。函數(shù)f()必須是連續(xù)的却音,否則結果是未定義的
sin(x) 計算sin(x)
sinh(x) 計算雙曲正弦函數(shù)
sqrt(expr) 計算√expr,結果是相當于(expr)^ 0.5
squish(x) 計算表達式1/(1 + exp(4*x))
st(var, expr) 將表達式expr的值存儲到帶有數(shù)字var(值0到9)的內(nèi)部變量中,變量目前不在表達式之間共享
tan(x) 計算tanx
tanh(x) 計算雙曲正切x
taylor(expr, x)
taylor(expr, x, id)
-求x的泰勒級數(shù)矢炼,expr表示f(x)在0處的導數(shù)
-如果id沒有指定系瓢,則假定為0
-如果你有y的導數(shù)而不是0,可以用taloy(expr, x-y)
-如果級數(shù)不收斂句灌,結果是未定義的
trunc(expr) 向0到最近的整數(shù)夷陋,例如地板(-4.5)=-4
while(cond, expr) 計算表達式expr時,表達式cond為非零胰锌,并返回最后一個expr評價的值骗绕,或者NAN if cond總是false
-rc_eq選項的特殊函數(shù)
bits2qp(bits)
qp2bits(qp)
附加功能,可與其他函數(shù)一起使用资昧,以定義由所選編解碼器的-rc_eq選項指定的速率控制方程

使用函數(shù)的例子

函數(shù)的大量應用程序提供了drawtext過濾器爹谭。例如,可以使用lt(x, y)和gt(x, y)函數(shù)來設置文本出現(xiàn)或從視頻幀中消失的時間榛搔,下一個命令在開始時將文本延遲5秒:

ffplay -f lavfi -i color=c=orange -vf ^ drawtext=fontfile=/Windows/Fonts/arial.ttf:fontcolor=white:fontsize=20:^ text="5 seconds delayed text":x=(w-tw)/2:y=(h-th)/2:draw=gt(t\,5)

在書中使用函數(shù)的其他例子:

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诺凡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子践惑,更是在濱河造成了極大的恐慌腹泌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尔觉,死亡現(xiàn)場離奇詭異凉袱,居然都是意外死亡,警方通過查閱死者的電腦和手機侦铜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門专甩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钉稍,你說我怎么就攤上這事涤躲。” “怎么了贡未?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵种樱,是天一觀的道長。 經(jīng)常有香客問我俊卤,道長嫩挤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任消恍,我火速辦了婚禮岂昭,結果婚禮上,老公的妹妹穿的比我還像新娘狠怨。我一直安慰自己约啊,他們只是感情好邑遏,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棍苹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茵汰。 梳的紋絲不亂的頭發(fā)上枢里,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音蹂午,去河邊找鬼栏豺。 笑死,一個胖子當著我的面吹牛豆胸,可吹牛的內(nèi)容都是我干的奥洼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼晚胡,長吁一口氣:“原來是場噩夢啊……” “哼灵奖!你這毒婦竟也來了?” 一聲冷哼從身側響起估盘,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瓷患,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后遣妥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體擅编,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年箫踩,在試婚紗的時候發(fā)現(xiàn)自己被綠了爱态。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡境钟,死狀恐怖锦担,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情慨削,我是刑警寧澤吆豹,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站理盆,受9級特大地震影響痘煤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜猿规,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一衷快、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧姨俩,春花似錦蘸拔、人聲如沸师郑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宝冕。三九已至,卻和暖如春邓萨,著一層夾襖步出監(jiān)牢的瞬間地梨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工缔恳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宝剖,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓歉甚,卻偏偏與公主長得像万细,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子纸泄,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,383評論 0 5
  • for表達式是monad語法糖 先看一組示例: Person類包含了人員名稱赖钞,是否是男性,以及他的孩子的字段聘裁。代碼...
    JasonDing閱讀 592評論 0 0
  • 1.簡介 數(shù)據(jù)存儲有哪些方式仁烹?電子表格,紙質(zhì)文件咧虎,數(shù)據(jù)庫卓缰。 那么究竟什么是關系型數(shù)據(jù)庫? 目前對數(shù)據(jù)庫的分類主要是...
    喬震閱讀 1,722評論 0 2
  • 戰(zhàn)車逆位砰诵,今天對這張牌沒什么感覺征唬,白色的獅身人面獸感覺是自己,有些哀怨和悲傷茁彭,黑色的那個感覺是婆婆总寒,她比較強,戰(zhàn)車...
    塔羅師默默閱讀 177評論 0 0
  • by 甌南 1 你有沒有愛過這樣一個人理肺?明知道沒有結果摄闸,卻依然想對Ta好,哄Ta笑妹萨;陪Ta哭年枕,伴Ta鬧。甚至是默默...
    甌南閱讀 1,045評論 3 18