タグ別アーカイブ: Video_Filters

直線上の YUV, RGB の値を表示する oscilloscope

ffmpeg 3.4 から追加予定のフィルタ。直線上の YUV, RGB の平均値と最小値、最大値と波形が表示される oscilloscope フィルタの使い方。

基本コマンド

中央の平行方向で調べるコマンド例
ffmpeg -i input -vf oscilloscope=x=0.5:y=0.5:s=0.8:t=0.5:o=0.8:tx=0.5:ty=0.9:tw=0.8:th=0.3:c=7:g=1:st=1:sc=1 output
ffmpeg -i input -vf oscilloscope=0.5:0.5:0.8:0.5:0.8:0.5:0.9:0.8:0.3:7:1:1:1 output
ffplay -i input -vf oscilloscope=0.5:0.5:0.8:0.5:0.8:0.5:0.9:0.8:0.3:7:1:1:1

oscilloscope の表示例

16:9 の映像で調べる範囲と統計グラフの幅を 0.9 で揃えるコマンド例
ffplay "-i input -vf oscilloscope=s='0.9*16/hypot(9,16)':tw=0.9
公式ドキュメント:FFmpeg Filters Documentation : oscilloscope
続きを読む 直線上の YUV, RGB の値を表示する oscilloscope

矩形部分の YUV, RGB の値を表示する pixscope

ffmpeg 3.4 から追加予定のフィルタ。矩形部分の YUV, RGB の平均値と最小値、最大値、RMS と矩形の拡大も表示される pixscope フィルタの使い方。

基本コマンド

映像中央の縦横7ピクセルを調べて、統計グラフを右下に表示する
ffmpeg -i input -vf pixscope=x=0.5:y=0.5:w=7:h=7:o=0.5:wx=-1:wy=-1 output
ffmpeg -i input -vf pixscope=0.5:0.5:7:7:0.5:-1:-1 output
ffplay -i input -vf pixscope=0.5:0.5:7:7:0.5:-1:-1

pixscope フィルタの表示例

公式ドキュメント:FFmpeg Filters Documentation : pixscope
続きを読む 矩形部分の YUV, RGB の値を表示する pixscope

フリッカー(ちらつき) を低減する deflicker

ffmpeg 3.4 から追加予定のフィルタ。蛍光灯や昔の映像で数フレーム毎に明るくなったり暗くなったりするのを前後フレームから平均してちらつきを抑える deflicker フィルタの使い方。

基本コマンド

5フレーム前から輝度の平均が始まる
ffmpeg -i input -vf deflicker=s=5:m=0:bypass=0 output
ffplay -i input -vf deflicker=5:0:0

公式ドキュメント:FFmpeg Filters Documentation : deflicker
続きを読む フリッカー(ちらつき) を低減する deflicker

フィルタで手軽にリミッテッドレンジに出来る limiter

ffmpeg 3.4 から追加予定のフィルタ。各チャンネルの上限と下限を越えたらその上限と下限でカットする limiter フィルタの使い方。今までは lut フィルタでも同様のことが出来たが、こちらのフィルタの方がコードの量も少なく直感的でわかりやすい。

基本コマンド

すべてのチャンネルを 16 から 235 までのリミテッドレンジに変える
ffmpeg -i input -vf limiter=16:235 output
ffplay -i input -vf limiter=16:235

オプション

  • min[int]
    最小値の指定
    範囲:0 から 65535 まで
    既定値:0
  • max[int]
    最大値の指定
    範囲:0 から 65535 まで
    既定値:65535
  • planes[int]
    フィルタを当てるチャンネル指定
    詳しくは ffmpeg について | チャンネルの順番と注意点 を参照
    範囲:0 から 15 まで
    既定値:15(すべてのチャンネル)

2ファイル入力するフィルタの挙動設定 framesync

一部のフィルタ(現在では blend, convolve, libvmaf, lut3d, overlay, psnr, ssim) で設定できる動画時間が異なるファイルの挙動設定を行う framesync の設定方法。以前は個別のフィルタ毎に設定していたがこれのおかげで設定内容が統一された。

公式ドキュメント:FFmpeg Filters Documentation : Options for filters with several inputs (framesync)

記事にしているフィルタ
Windows の ffmpeg で生放送する方法 : overlay
YUV RGB を比較計算する blend
2つの映像の画質評価をする SSIM
続きを読む 2ファイル入力するフィルタの挙動設定 framesync

4:3を16:9に、16:9を4:3に余白と透過をつける

前回記事は余白だけをつけたが今回はその余白の部分だけ透過させる。映像の部分的に透過させるには geq フィルタを使う。アルファチャンネルをプレビューするには alphaextract フィルタを使う。

640×360の16:9映像を上下に白枠と透過を付けて4:3にする。出力解像度は 640×480
ffplay -f lavfi -i color=s=640x360 -vf format=yuva420p,pad=iw:iw*3/4:0:(oh-ih)/2:white,geq='p(X,Y):a=(between(X,0,W)*between(Y,H/8,7*H/8))*255'
640×480の4:3映像を左右に白枠と透過を付けて16:9にする。出力解像度は 852×480
ffplay -f lavfi -i color=s=640x480 -vf format=yuva420p,pad=ih*16/9:ih:(ow-iw)/2:0:white,geq='p(X,Y):a=(between(X,W/8,7*W/8)*between(Y,0,H))*255'

4:3を16:9に、16:9を4:3に余白をつける

ffmpeg に pad フィルタがあるのでこれを使って4:3を16:9に、16:9を4:3に余白をつける。コマンド例は黒映像に余白は白を足している。

640×360の16:9映像を上下に白枠を付けて4:3にする。出力解像度は 640×480
ffplay -f lavfi -i color=s=640x360 -vf pad=iw:iw*3/4:0:(oh-ih)/2:white
640×480の4:3映像を左右に白枠を付けて16:9にする。出力解像度は 852×480
ffplay -f lavfi -i color=s=640x480 -vf pad=ih*16/9:ih:(ow-iw)/2:0:white

新配信(β)で4:3映像に余白をつけて800×450配信にする

元映像が4:3なら丁度よい解像度にリサイズし余白をつけて推奨解像度の800×450にする。余白の色の既定値は黒で適宜指定できる。配信映像がドット絵なら neighbor を指定し、それ以外は lanczosbicubic(無指定ならこれ) を指定する。
scale=576:432:flags=neighbor,fifo,pad=800:450:112:9:black

余白の色の指定方法
FFmpeg Utilities Documentation : Color

Windows の ffmpeg で生放送する方法 : scale
Windows の ffmpeg で生放送する方法 : pad

生放送をNLEなどの外部ツールで高画質配信する | ニコニコヘルプ

ビットレートが高く配信が途切れる場合は TCPRelay を使う
Windows の ffmpeg で生放送する方法 : TCPRelayの使い方

ドラクエの戦闘シーンチェンジエフェクトを作る

ニコニコ動画に投稿された「DQエンカウント風AviUtlシーンチェンジ用素材 sm30578410」を元に ffmpeg でも同じことを実装する。配布されたファイルは 8bit PNG なのでそれを使い、グラデーションマスクを作成し2入力を合わせる方法をとる。サンプルコマンドの出力コーデックは適宜変える。input1.mp4 と input2.mp4 は 640×360 30000/1001 fps の動画である。それに伴って。color ソースもそれに統一する。シーンチェンジは input1.mp4 から input2.mp4 の順番に切り替わるのがドラクエの戦闘シーンチェンジエフェクトになる。
続きを読む ドラクエの戦闘シーンチェンジエフェクトを作る

白と黒を使ったフェード効果

白や黒にフェードインする効果と、白や黒から入力した映像にフェードアウトする効果の解説。入力した映像が YUV、または RGB で処理が異なる。効果は2秒から4秒に掛けての2秒間で行う。適宜効果の時間は設定を変える。

関連記事
数式で線や円、模様が描ける geq
特定の区間だけフィルタを当てるタイムライン編集について
続きを読む 白と黒を使ったフェード効果