手元に映像ファイルがなくても単色や、カラーバーを作ることが出来る。
目次
基本コマンド
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 |
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
オプション
- color, c[color]
colorで色を指定する。色の名前を直接指定する場合と、[0x|#]RRGGBB[AA] 形式が使える。FFmpeg Utilities Documentation : Colorを参照。
ffmpeg -colors
でも調べられる
既定値:black - level[int]
haldclutsrcのレベルを指定する。指定した値の3乗がCLUTの縦と横のピクセル数になる
範囲:2 から 16 まで
既定値:6 - size, s[image_size]
出力解像度の指定。横x縦 の指定と、解像度の略語指定が出来る。FFmpeg Utilities Documentation : Video sizeを参照。allrgb, allyuv, haldclutsrcでは使えない
既定値:入力ソースで異なる - rate, r[video_rate]フレームレートの指定。小数点の指定や分数の指定も可能
既定値:25 - sar[rational]
SAR の指定。横/縦
既定値:1/1 - alpha[int]
testsrc2の透過の指定だが、標準のカラーフォーマットは yuv420p なので yuva420p などに変える必要がある
範囲:0(透過) から 255(透過しない) まで
既定値:255 - duration, d[duration]
動画時間の指定。秒指定、hh:mm:ss 形式や、小数点の指定も可能。FFmpeg Utilities Documentation : Time durationを参照 - decimals, n[int]
testsrcの表示時間の小数点以下の表示桁数
既定値:0
そのほかの映像ソースに、cellauto、coreimagesrc、mandelbrot、frei0r_src、life、openclsrcなどがある。
- FFmpeg Filters Documentation : cellauto
- FFmpeg Filters Documentation : mandelbrot
- FFmpeg Filters Documentation : mptestsrc
- 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
フレームレート - duration, d
秒指定。無指定なら無制限 - test, t
テストソースのパターン指定 - dc_luma
- dc_chroma
- freq_luma
- freq_chroma
- amp_luma
- amp_chroma
- cbp
- mv
- ring1
- ring2
- 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:三角形