手元に映像ファイルがなくても単色や、カラーバーを作ることが出来る。

公式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]"

テストシグナルの音声を作る sine

ピクセルフォーマットやビット深度の変更は入力ソースで変更する。
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 を縦横8分の1にした

allyuv を縦横8分の1にした

color。YUVの値は16:128:128

colorchart

colorspectrum

haldclutsrc(正方形)

nullsrc。YUVの値は0:0:0(ダークグリーン)

pal75bars

pal100bars

rgbtestsrc

smptebars

smptehdbars

testsrc。タイマーと横に伸びたカラーバーが変化する

testsrc2。タイマーと4つのオブジェクトが変化する

yuvtestsrc

カラーフォーマットと解像度

ソース フォーマット 解像度
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:スキントーン

公式ドキュメント:FFmpeg Filters Documentation : allrgb, allyuv, color, colorchart, colorspectrum, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc

そのほかの映像ソースに、cellauto、coreimagesrc、mandelbrot、frei0r_src、life、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

表示サンプル

dc_luma

dc_chroma

freq_luma

freq_chroma

amp_luma

amp_chroma

cbp

mv

ring1

ring2

オプション

  • 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

表示サンプル

type=carpet

type=triangle

オプション

  • 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フィルタを使う。

数式で線や円、模様が描ける geq

基本コマンド

ffmpeg -f lavfi -i gradients=d=10 -pix_fmt yuv420p gradients.mp4
ffplay -f lavfi -i gradients

表示サンプル

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

表示サンプル

avsynctest

オプション

  • 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

One thought on “ffmpeg で使える映像のテストソース”

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)