ffmpeg で使える計算書式

どこでこの書式を使うかというと座標やフレーム数、音声の周波数を指定するときの値やタイムライン編集で使う。全てを記載していないのですべての使い方は公式ドキュメントを参照。

公式ドキュメント : FFmpeg Utilities Documentation :: Expression Evaluation
使えるフィルタ一覧 : FFmpeg Filters Documentation

ffmpeg でテキストを動的に表示する
特定の区間だけフィルタを当てるタイムライン編集について
Expression_Evaluation | タグ検索

n は 0 から始まるフレーム数(整数)
t は 0 からはじまるタイムスタンプ(時間秒)
expr は評価式指定でもできるし、そうでなくてもよい
この書式を使ってエラーが出る場合は '' で挟むか、半角スペースを削除するか、エスケープする
0 または 1 を返す変数は、変数の頭に置いてその変数の有効無効に使う
三角関数で使われる sin などは角度指定ではなく、ラジアン指定である

値を調べるには print() を使う

  • sinh(x) ハイパボリックサイン(双曲線関数)
  • cosh(x) ハイパボリックコサイン
  • tanh(x) ハイパボリックタンジェント
  • sin(x) サイン(三角関数)
    sin((PI*n)/180) 360フレームで1回転する
    sin((PI*(360/5)*t)/180) 5秒で1回転する
    sin((PI*(180/5)*t)/180) 5秒で半回転する
  • cos(x) コサイン
  • tan(x) タンジェント
  • asin(x) アークサイン(逆関数)
  • acos(x) アークコサイン
  • atan(x) アークタンジェント
  • exp(x) 自然対数の底 e の x 乗。exp(0) = 1
  • log(x) 自然対数の底 e の x。log(E) = 1
  • abs(x) x の絶対値を返す
  • isnan(x) x が数字でなければ 1 を返す、そうでなければ 0 を返す
  • mod(x,y) x を y で割り、その余りを返す
    mod(n,100) 0から99までそれを返し、100は0を返し、101は1を返し、以下ループ

  • max(x,y) x≦y は y を返し、x>y は x を返す
  • min(x,y) x≦y は x を返し、x>y は y を返す
  • between(x,min,max) x が min 以上または max 以下ならば 1、そうでなければ 0 を返す
  • bitand(x,y) ビットアンドの x, y
  • bitor(x,y) ビットオアの x, y
  • clip(x,min,max) x が min から max の間だけ返す。min以下は min を返し、max 以上は max を返す
    clip(x,0,255) でマイナスは 0 に、 256 以上は255に、その間はそのままを返す
  • eq(x,y) x=y のときに 1 を返し、そうでなければ 0 を返す
  • gcd(x, y) x, y の共通の最大公約数を返す。x, y の両方が 0 だと 0 を返し、x, y の片方が 0 または マイナスだと undefined を返す
  • gt(x,y) x>y ならば 1 を返し、そうでなければ 0 を返す
    gt(n,100) n が100より大きければ 1 を返し、100以下ならば 0 を返す
  • gte(x,y) x≧y ならば 1 を返し、そうでなければ 0 を返す
    gte(n,100) n が100以上ならば 1 を返し、100より小さければ 0 を返す
    gte(n,0) n が0以上ならば 1 を返し、マイナスならば 0 を返す
  • lt(x,y) x<y ならば 1 を返し、そうでなければ 0 を返す
    lt(n,100) n が100より小さければ 1 を返し、100以上ならば 0 を返す
  • lte(x,y) x≦y ならば 1 を返し、そうでなければ 0 を返す
    lte(n,100) n が100以下ならば 1 を返し、100より大きければ 0 を返す
    lte(n,0) n が0以下ならば 1 を返し、0より大きければ 0 を返す

  • st(var,expr) var には数値を、expr は計算式が使える
  • ld(var) st() で使った変数を再利用する 同じフィルタのオプション(::)内でしか使えない
    つまり同じフィルタ内にあると st(n,mod(n,100)) と ld(n) は同じ計算になる
    例:x='st(0, 100);ld(0)' x には 100 が代入される
    例:x='st(0, 100);st(1, 100);ld(0)+ld(1)' x には 200 が代入される

  • ceil(expr) 小数点以下を繰り上げ
    ceil(1.5) は 2.0 になる
  • floor(expr) 小数点以下を繰り下げ
    floor(-1.5) は -2.0 になる
  • trunc(expr) 小数点以下を切り捨て
    trunc(-1.5) は -1.0 になる
  • gauss(x)
    ガウス関数に x を代入して返す

  • sqrt(expr) 評価式の平方根を返す
  • hypot(x,y)
    C 言語の hypot と同じ。sqrt(x*x + y*y) を返す。直角三角形の斜辺の長さを求める
  • squish(x) 1/(1+exp(4*x)) を返す
  • random(x) 0 から 1 までの小数点を含む値をランダム数を返す x は他の値と区別する
  • if(x,y) x が 0 であれば 0 を返す、そうでなければ y を返す
  • if(x,y,z) x が 0 であれば z を返す、そうでなければ y を返す
    if(x,0,1) で 0 と 1 を逆に返す
  • ifnot(x,y) x が 0 であれば y を返す、そうでなければ 0 を返す
  • ifnot(x,y,z) x が 0 であれば y を返す、そうでなければ z を返す
  • not(expr) 評価式が 0 ならば 1 を返し、そうでなければ 0 を返す
  • time(0) 現在の時間を Unixtime で返す
  • pow(x,y) (x)^(y) つまり x の y 乗
  • print(t), print(t,1) t(タイムスタンプ)のログをコンソールに表示。引数をつけることでログレベルを指定できる。t の部分を変えることでいろいろな変数の値を調べられる

  • PI 円周率 約3.14
  • E 自然対数の底 約2.718
  • PHI 黄金比 約1.618

訂正 2013/07/13、2016/12/02、2016/12/22、2017/02/04、2017/02/16
比較の書式を直した

2017/03/15
gt, gte, lt, lte の説明が間違っていたのを直した

使用例

そのほかの対応フィルタ

関連記事

この記事へのコメント

管理人のみ通知 :

トラックバック


ニコニコチャンネル始めました
ニコラボチャンネル
スポンサード リンク
Amazon はこちらから
新着記事と追記・編集記事
スポンサード リンク
ブログ内検索
プロフィール

Author:ロベルト
お問い合わせはこちらまで
robelt2525[at]gmail.com

中の人 @nico_lab
ブログ更新用 @blo_nico_lab

詳しいプロフィールはこちら

カテゴリ
アクセスの多い記事
記事アーカイブ

最新コメント
リンク
ニコニコ静画
アニメカテゴリ毎時ランキング
免責事項
当ブログはリンクフリーです。記事によりトラブルが生じた場合でも、当ブログ管理人は一切の責任を負いません。 当ブログに記載されている情報の正誤や利用は、ご自身の判断でお願いします。 紹介したアプリケーションに関する問い合わせは作者に問い合わせてください。ニコニコ動画に関する質問はまずは公式掲示板、2ch、各Q&Aサイトを参照ください。
ブログの読者になる(RSS)
アクセス数