特定のフィルタで出力されるメタデータを扱うことができるmetadata
フィルタの使い方。ametadata
フィルタも同じオプションで使うことができる。こちらはコンソールに出力するに対してdrawgraph
フィルタは映像にテキストやグラフで出力する。drawgraph
フィルタと比べて出力範囲を指定しなくても良いので使いやすい。functionを使うことでメタデータの内容を条件で使い分けることができる。
メタデータを映像化する drawgraph, adrawgraph
基本コマンド
signalstats
フィルタからYDIF
を表示している。
ffplay -i input -vf signalstats,metadata=print:key=lavfi.signalstats.YDIF:function=expr:expr='between(VALUE1\,0\,1)'
unsharp
フィルタのY差分をssim
で表示している。
ffplay -i input -vf split[a][b];[b]unsharp[B];[a][B]ssim,metadata=print:key=lavfi.ssim.Y
drawtext
フィルタで映像に書き込む。
ffplay -i input -vf split[a][b];[b]unsharp[B];[a][B]ssim,drawtext=fontfile=C\\://WINDOWS/Fonts/arial.ttf:text='"SSIM="%{metadata\:lavfi.ssim.all}'
ebur128
フィルタでM、S、Iを同時に表示するにはametadata
フィルタを3つ並べる。
ffplay -i input -af ebur128=metadata=1,ametadata=print:key=lavfi.r128.M,ametadata=print:key=lavfi.r128.S,ametadata=print:key=lavfi.r128.I
ffplay -f lavfi -i amovie=input,ebur128=metadata=1,ametadata=print:key=lavfi.r128.M,ametadata=print:key=lavfi.r128.S,ametadata=print:key=lavfi.r128.I[out0];amovie=input[out1]
黒が50%未満を出力せずに、その前のフレームをコピーして出力する。blackframe=0
で全フレームを対象に、metadata
フィルタで対象フレームを選ぶ。コピーした重複フレームではなく可変フレームで出力するには-vsync vfrにする。
ffmpeg -i input -vf blackframe=0,metadata=select:key=lavfi.blackframe.pblack:value=50:function=less -vsync cfr -c:a copy output
idet
フィルタのsingle.progressiveのログをテキストで出力する。
ffmpeg -i input -vf idet,metadata=print:key=lavfi.idet.single.progressive:file=single.progressive.txt -an -f null -
ffprobeでsiti
フィルタのlavfi.siti.si,lavfi.siti.tiをcsvで出力する。
ffprobe -v error -f lavfi -i movie=input.mp4,siti -show_entries packet=pts_time -show_entries packet_tags=lavfi.siti.si,lavfi.siti.ti -read_intervals "%1" -of csv > siti.csv
ffprobe の使い方
メタデータを標準出力する。
metadata=mode=print:file=-
metadata=mode=print:file='pipe\:4'
公式ドキュメント:FFmpeg Filters Documentation : metadata, ametadata
公式wiki:FilteringGuide – FFmpeg : Filter Metadata
Continue reading “メタデータをコンソールに表示する metadata, ametadata”