手元に映像ファイルがなくても単色や、カラーバーを作ることが出来る。
公式wiki:FancyFilteringExamples – FFmpeg
目次
基本コマンド
ffmpeg -f lavfi -i color -vframes 1 color.png
ffmpeg -f lavfi -i color=s=1280x720:r=30:d=10 output.mp4
ffplay -f lavfi -i color=c=black:s=340x240:r=25:sar=1/1:d=60
より正確なテストソース。
ffmpeg -f lavfi -i sws_flags=+accurate_rnd+bitexact;color -sws_flags accurate_rnd+bitexact -flags +bitexact -fflags +bitexact -vframes 1 color.png
ffplay -f lavfi -i sws_flags=+accurate_rnd+bitexact;color=c=black:s=340x240:r=25:sar=1/1:d=60 -sws_flags +accurate_rnd+bitexact -flags +bitexact -fflags +bitexact
音声のテストソースも同時に扱う。
ffmpeg -f lavfi -i smptehdbars=1920x1080:d=10 -f lavfi -i sine=frequency=1000:d=10 output.mp4
ffplay -f lavfi -i smptehdbars=1920x1080[out0];sine=frequency=1000[out1]"
ピクセルフォーマットやビット深度の変更は入力ソースで変更する。
ffmpeg -f lavfi -i yuvtestsrc=d=5,format=yuv422p10le -c:v prores_ks -profile:v 4444xq -pix_fmt yuv422p10le yuvtestsrc.mov
ピクセルフォーマット一覧。
ffmpeg -pix_fmts
各種ソースは-filter_complex
内で作ることもできる。d=3で3秒のファイルにshortest=1ですべての出力を時間指定した3秒で止めるようにしている。
ffmpeg -f lavfi -i testsrc2=d=3 -filter_complex "mptestsrc,scale=320x240[1];sierpinski=320x240,[0][1]vstack=3:shortest=1" output
表示サンプル
カラーフォーマットと解像度
ソース | フォーマット | 解像度 |
allrgb | rgb24 | 4096×4096 |
allyuv | yuv444p | 4096×4096 |
color | yuv420p | 340×240 |
colorchart | gbrp | 384×256 |
colorspectrum | gbrpf32le | 340×240 |
haldclutsrc | rgb24 | 216×216(正方形) |
nullsrc | yuv420p | 340×240 |
pal75bars | yuv420p | 340×240 |
pal100bars | yuv420p | 340×240 |
rgbtestsrc | rgba | 340×240 |
smptebars | yuv420p | 340×240 |
smptehdbars | yuv420p | 340×240 |
testsrc | rgb24 | 340×240 |
testsrc2 | yuv420p | 340×240 |
yuvtestsrc | yuv444p | 340×240 |
フォーマットが yuv420p の映像を使うときに奇数解像度の指定は、奇数は切り捨てられるので入力時点でフォーマットを yuv444p や、rgb24 などのフォーマットに変換する。
ffmpeg -f lavfi -i testsrc2=s=321x241:d=10,format=yuv444p -c:v ffv1 output.mkv
ffplay -f lavfi -i testsrc2=s=321x241,format=yuv444p
[colorspaces] What are the color characteristics of the FFmpeg test sources? : ffmpeg
オプション
- color, c[color]
colorソースの色を指定する。色の名前を直接指定する場合と、[0x|#]RRGGBB[AA] 形式が使える。FFmpeg Utilities Documentation : Colorを参照。
ffmpeg -colors
でも調べられる
既定値:”black” - level[int]
haldclutsrcのレベルを指定する。指定した値の3乗がCLUTの縦と横のピクセル数になる
既定値:6
範囲:2 から 16 まで - size, s[image_size]
出力解像度の指定。横x縦 の指定と、解像度の略語指定が出来る。FFmpeg Utilities Documentation : Video sizeを参照。allrgb, allyuv, haldclutsrc, colorchartでは使えない
既定値:入力ソースで異なる - rate, r[video_rate]フレームレートの指定。小数点の指定や分数の指定も可能
既定値:25 - sar[rational]
SAR の指定。横/縦
既定値:1/1 - alpha[int]
testsrc2の透過の指定だが、標準のカラーフォーマットは yuv420p なので yuva420p などに変える必要がある
既定値:255
範囲:0(透過)から 255(透過しない)まで - duration, d[duration]
動画時間の指定。秒指定、hh:mm:ss 形式や、小数点の指定も可能。FFmpeg Utilities Documentation : Time durationを参照 - decimals, n[int]
testsrcの表示時間の小数点以下の表示桁数
既定値:0 - type[int]
colorspectrumの色の指定 - 0, black:既定値
- 1, white
- 2, all
- patch_size[image_size]
colorchartで使える。1つの区画、横x縦の解像度指定。同じ値を指定する
既定値:64×64 - preset[int]
colorchartで使える - 0, reference:既定値
- 1, skintones:スキントーン
そのほかの映像ソースに、cellauto、coreimagesrc、mandelbrot、frei0r_src、life、openclsrcなどがある。
- FFmpeg Filters Documentation : cellauto
- FFmpeg Filters Documentation : mandelbrot
- FFmpeg Filters Documentation : frei0r_src
- FFmpeg Filters Documentation : life
- FFmpeg Filters Documentation : openclsrc
mptestsrc
上のテストソースは主に映像の変化がないが、こちらのテストソースは映像の変化が多い。解像度は512×512のピクセルフォーマットはYUV420p。
基本コマンド
ffmpeg -f lavfi -i mptestsrc=r=30:d=1:t=dc_luma mptestsrc.mp4
ffplay -f lavfi -i mptestsrc=30:1:dc_luma
表示サンプル
オプション
- rate, r[video_rate]フレームレート
- duration, d[duration]
動画時間の指定。秒指定、hh:mm:ss 形式や、小数点の指定も可能。FFmpeg Utilities Documentation : Time durationを参照 - test, t[int]
テストソースのパターン指定 - 0, dc_luma
- 1, dc_chroma
- 2, freq_luma
- 3, freq_chroma
- 4, amp_luma
- 5, amp_chroma
- 6, cbp
- 7, mv
- 8, ring1
- 9, ring2
- 10, all
公式ドキュメント:FFmpeg Filters Documentation : mptestsrc
sierpinski
シェルピンスキーの四面体。ピクセルフォーマットはRGB0。
基本コマンド
ffmpeg -f lavfi -i sierpinski=s=640x360:seed=-1:jump=100:type=carpet -pix_fmt yuv420p -t 10 sierpinski.mp4
ffplay -f lavfi -i sierpinski
表示サンプル
オプション
- size, s[image_size]
出力解像度の指定。横x縦 の指定と、解像度の略語指定が出来る。FFmpeg Utilities Documentation : Video sizeを参照
既定値:640×480 - rate, r[video_rate]フレームレートの指定
既定値:25 - seed[int64]
ランダムパンするシードの指定。パンする方向が変わる
既定値:-1
範囲:-1からUINT32_MAXまで - jump[int]
パンするときの最大移動距離
既定値:100
範囲:1から10000まで - type[int]
フラクタルの種類の指定 - 0, carpet:カーペット。既定値
- 1, triangle:三角形
公式ドキュメント:FFmpeg Filters Documentation : sierpinski
gradients
時計回りに回転するグラデーションソース。ピクセルフォーマットはRGBA。手動で色を指定するならgeq
フィルタを使う。
基本コマンド
ffmpeg -f lavfi -i gradients=d=10 -pix_fmt yuv420p gradients.mp4
ffplay -f lavfi -i gradients
表示サンプル
オプション
- c0, c1, c2, c3, c4, c5, c6, c7[color]
最大8種類の色を指定できる
既定値:”random” - x0, y0[int]
グラデーションの左上の座標指定。負の値はランダム
既定値:-1
範囲:-1からINT_MAXまで - y0, y1[int]
グラデーションの右下の座標指定。負の値はランダム
既定値:-1
範囲:-1からINT_MAXまで - nb_colors, n[int]
色数の指定
既定値:2
範囲:2から8まで - seed[int64]
seedの指定
既定値:-1
範囲:-1からUINT32_MAXまで - duration, d[duration]
動画時間の指定。秒指定、hh:mm:ss 形式や、小数点の指定も可能。FFmpeg Utilities Documentation : Time durationを参照 - speed[float]
回転速度の指定。大きな値ほど速い
既定値:0.01
範囲:0.00001から1まで - type, t[int]
- 0, linear:既定値
- 1, radial
- 2, circular
- 3, spiral
公式ドキュメント:FFmpeg Filters Documentation : gradients
avsynctest
リップシンク検証テストソース。ピクセルフォーマットはYUV420p。音声はモノラル。出力は音声、映像の順番になるので[out0]が音声、[out1]が映像になる。
基本コマンド
ffplay -f lavfi -i avsynctest[out0][out1]
ffmpeg -f lavfi -i avsynctest=d=10[out0][out1] avsynctest.mp4
音声がモノラルなのでステレオにするならasplit
フィルタで複製してamerge
フィルタで左右のレイアウトに割り当てる。
ffmpeg -f lavfi -i avsynctest=d=10[out0][out1];[out0]asplit=2,amerge[out0] avsynctest.mp4
出力解像度を大きくすると表示される文字が相対的に大きくならないのでscale
フィルタで拡大する。文字だけなのでneighborで拡大するとぼけない。
ffmpeg -f lavfi -i avsynctest=d=10[out0][out1];[out1]scale=2*iw:2*ih:flags=neighbor[out1] avsynctest.mp4
ただし右の文字は拡大前の解像度になるので気になるならdrawbox
フィルタで黒塗りにして、drawbox
フィルタで文字を入れる。
ffmpeg -f lavfi -i "avsynctest=s=480x270:d=10[out0][out1];[out1]drawbox=7*iw/10:ih/2:iw/5:ih/32:black:fill,scale=4*iw:4*ih:flags=neighbor,drawtext=fontfile=C\\://WINDOWS/Fonts/arial.ttf:fontsize=36:text=WxH\\:\\ 1920x1080:fontcolor=white:x=9*(w-tw)/10:y=(h-th)/2[out1]" avsynctest.mp4
表示サンプル
オプション
- size, s[image_size]
出力解像度の指定。横x縦 の指定と、解像度の略語指定が出来る。FFmpeg Utilities Documentation : Video sizeを参照
既定値:hd720 - framerate, fr[video_rate]
出力フレームレート
既定値:30 - samplerate, sr[int]
出力サンプルレート
既定値:44100
範囲:8000から384000まで - amplitude, a[float]
ビープ音の振幅。大きな値ほど音量も大きい
既定値:0.7
範囲:0から1まで - period, p[int]
ビープが鳴る秒間隔
既定値:3
範囲:1から99まで - delay, dl[int]
遅延するフレーム数
既定値:0
範囲:-30から30まで - cycle, c[boolean]
遅延周期の有効化。有効にすると遅延が可変になる
既定値:0 - duration, d[duration]
動画時間の指定。秒指定、hh:mm:ss 形式や、小数点の指定も可能。FFmpeg Utilities Documentation : Time durationを参照 - fg[color]
前景の色指定。色の名前を直接指定する場合と、[0x|#]RRGGBB[AA] 形式が使える。FFmpeg Utilities Documentation : Colorを参照。
ffmpeg -colors
でも調べられる
既定値:”white” - bg[color]
背景の色指定。色の名前を直接指定する場合と、[0x|#]RRGGBB[AA] 形式が使える。FFmpeg Utilities Documentation : Colorを参照。
ffmpeg -colors
でも調べられる
既定値:”black” - ag[color]
その他の色指定。色の名前を直接指定する場合と、[0x|#]RRGGBB[AA] 形式が使える。FFmpeg Utilities Documentation : Colorを参照。
ffmpeg -colors
でも調べられる
既定値:”gray”
公式ドキュメント:FFmpeg Filters Documentation : avsynctest
zoneplate
ゾーンプレート映像を作る。出力ピクセルフォーマットはyuv444p。
基本コマンド
水平カラー正弦波スイープを生成する
ffplay -f lavfi -i zoneplate=ku=512:kv=0:kt2=0:kx2=256:s=wvga:xo=-426:kt=11
垂直カラーサインスイープを生成する
ffplay -f lavfi -i zoneplate=ku=512:kv=0:kt2=0:ky2=156:s=wvga:yo=-240:kt=11
円形のゾーンプレートを生成する
ffplay -f lavfi -i zoneplate=ku=512:kv=100:kt2=0:ky2=256:kx2=556:s=wvga:yo=0:kt=11
公式ドキュメント:FFmpeg Filters Documentation : zoneplate
オプション
- size, s[image_size]
出力解像度の指定。横x縦 の指定と、解像度の略語指定が出来る。FFmpeg Utilities Documentation : Video sizeを参照
既定値:320×240 - rate, r[video_rate]フレームレートの指定。小数点の指定や分数の指定も可能
既定値:25 - duration, d[duration]
動画時間の指定。秒指定、hh:mm:ss 形式や、小数点の指定も可能。FFmpeg Utilities Documentation : Time durationを参照 - sar
SARの指定。横/縦 - precision[int]
LUTの精度の指定
既定値:10
範囲:4から16 - xo[int]
X軸のオフセットの指定
既定値:0
範囲:INT_MINからINT_MAX - yo[int]
Y軸のオフセットの指定
既定値:0
範囲:INT_MINからINT_MAX - to[int]
T軸のオフセットの指定
既定値:0
範囲:INT_MINからINT_MAX - k0[int]
0次位相の指定
既定値:0
範囲:INT_MINからINT_MAX - kx[int]
1次X軸位相の指定
既定値:0
範囲:INT_MINからINT_MAX - ky[int]
1次Y軸位相の指定
既定値:0
範囲:INT_MINからINT_MAX - kt[int]
1次T軸位相の指定
既定値:0
範囲:INT_MINからINT_MAX - kxt[int]
X軸とT軸の積位相の指定
既定値:0
範囲:INT_MINからINT_MAX - kyt[int]
Y軸とT軸の積位相の指定
既定値:0
範囲:INT_MINからINT_MAX - kxy[int]
X軸とY軸の積位相の指定
既定値:0
範囲:INT_MINからINT_MAX - kx2[int]
2次X軸位相の指定
既定値:0
範囲:INT_MINからINT_MAX - ky2[int]
2次Y軸位相の指定
既定値:0
範囲:INT_MINからINT_MAX - kt2[int]
2次T軸位相の指定
既定値:0
範囲:INT_MINからINT_MAX - ku[int]
0次U色位相の指定
既定値:0
範囲:INT_MINからINT_MAX - kv[int]
0次V色位相の指定
既定値:0
範囲:INT_MINからINT_MAX
[…] FFmpeg で使える映像のテストソース | ニコラボ […]