タグ別アーカイブ: meta

ffmpeg で ocr

Tesseract-OCR を使った ocr フィルタで文字認証を行う。本家と同様に英語や日本語などたくさんの言語に対応している。ただし日本語の漢字の精度はかなりよくない。識字率を上げるのに OCR する前に対象文字周辺を crop フィルタで切り取ると上がりそうだがその他はわからない。

x:y は出力解像度。横:縦
w:h は出力解像度の左上隅の座標。横:縦
Windows の ffmpeg で生放送する方法 : crop
crop=x:y:w:h,ocr
続きを読む ffmpeg で ocr

映像フィルタを当てる前後のデータを見える化する

ffmpeg には多くの映像フィルタと音声フィルタがあるが、その効果を調べるのに主観的な判断だけではなく、客観的な判断ができるように数値を映像に表示したり、ヒストグラムを表示したりすることで映像で差違を見える化する。null フィルタを別のフィルタに変更することでフィルタを当てた同士で比較できる。
続きを読む 映像フィルタを当てる前後のデータを見える化する

メタデータをコンソールに表示する metadata, ametadata

特定のフィルタで出力されるメタデータを扱うことができる metadata の使い方。ametadata も同じオプションで使うことができる。こちらはコンソールに出力するに対して drawgraph は映像にテキストやグラフで出力する。drawgraph と比べて出力範囲を指定しなくても良いので使いやすい。

メタデータを映像化する drawgraph, adrawgraph

基本コマンド

signalstats フィルタから YDIF を表示している
ffplay -f lavfi -i movie=input,signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0: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 を同時に表示する
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]

公式ドキュメント:FFmpeg Filters Documentation : metadata, ametadata
続きを読む メタデータをコンソールに表示する metadata, ametadata

音声統計データを表示する astats

音声統計データを表示する astats の使い方。メタデータ対応しているので出力したログの加工が容易になる。

公式ドキュメント:FFmpeg Filters Documentation : astats

基本コマンド

ffprobe
ffprobe -f lavfi -i amovie=input,astats=length=0.05:metadata=0:reset=0
ffprobe -f lavfi -i aevalsrc=sin(440*2*PI*t):s=8000:d=1,astats=length=0.05:metadata=0:reset=0
続きを読む 音声統計データを表示する astats

メタデータを映像化する drawgraph, adrawgraph

映像の YUV、彩度、色相を映像にオーバーレイしたり、コンソールに表示したり出来る drawgraph フィルタと、音声の周波数や音量などを映像にオーバーレイしたり、コンソールに表示したり出来る adrawgraph フィルタの使い方。映像の表示方法はグラフで表示する方法と、映像に数値をオーバーレイする方法の2通りがある。
続きを読む メタデータを映像化する drawgraph, adrawgraph

音声を位相メーターの映像に変換する aphasemeter

基本コマンド

ffplay -f lavfi -i "amovie=input,aphasemeter=25:800x400:2:7:1:none"

基本は上から下に流れるので、rotate を使って右から左に流すコマンド
FFmpeg Filters Documentation : rotate
ffplay -f lavfi -i "amovie=input,aphasemeter=25:800x800:2:7:1:yellow,rotate=90*PI/180"

公式ドキュメント:FFmpeg Filters Documentation : aphasemeter
続きを読む 音声を位相メーターの映像に変換する aphasemeter

2つの映像の画質評価をする SSIM

2入力した映像を比較してオリジナルにどれだけ忠実であるか SSIM の値を計算する。主な用途はエンコード前後を比較してどれだけ劣化したのか、特定のフレームを抽出してエンコードを見直したりする。libx264 エンコードでリアルタイムで計測する場合はオプションの -tune ssim -ssim 1 を使う。

Windows の ffmpeg で生放送する方法 : エンコードのログ出力の方法
映像フィルタを当てる前後のデータを見える化する
メタデータをコンソールに表示する metadata, ametadata
メタデータを映像化する drawgraph, adrawgraph

最終結果だけを表示
ffmpeg -i input1 -i input2 -filter_complex ssim -an -f null -

ログファイルを出力する
ffmpeg -i input1 -i input2 -filter_complex ssim=stats.txt -an -f null -

metadata フィルタでフレーム単位でコンソールに表示する方法。ここでは unsharp フィルタの Y の ssim を表示している。
ffplay -i input -vf split[a][b];[b]unsharp[B];[a][B]ssim,metadata=print:key=lavfi.ssim.Y
lavfi.ssim.X 形式で X に代入できるのは、Y, U, V, R, G, B, All, dB。

framesync の設定にも対応している
2ファイル入力するフィルタの挙動設定 framesync
続きを読む 2つの映像の画質評価をする SSIM

YUV のデータを数値で表示する signalstats

基本コマンド

コンソールに統計データを表示する例
ffprobe -f lavfi movie=input,signalstats="stat=tout+vrep+brng" -show_frames

統計情報をプレビューする例
ffplay -i input -vf signalstats=out=1

drawgraph フィルタの併用で折れ線グラフを表示できる
ffplay -f lavfi -i "movie=input,signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255,drawgrid=0:0:0:32,format=yuv420p"
メタデータを映像化する drawgraph, adrawgraph

metadata フィルタの併用でコンソールにを表示できる
ffplay -f lavfi -i movie=input,signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
メタデータをコンソールに表示する metadata, ametadata

YUV の値だけを改行してテキストに書き出す
trim=end_frame=1 を外すと全フレーム出力する
ffprobe -f lavfi -i "movie=input,signalstats,trim=end_frame=1" -show_entries frame_tags=lavfi.signalstats.YAVG,lavfi.signalstats.UAVG,lavfi.signalstats.VAVG -of default=noprint_wrappers=1:nokey=1 > yuv.txt
trim フィルタの使い方

他のアプリケーションに利用しやすい JSON形式に書き出す
ffprobe -f lavfi -i "movie=input,signalstats,trim=end_frame=1" -show_entries frame_tags=lavfi.signalstats.YAVG,lavfi.signalstats.UAVG,lavfi.signalstats.VAVG -of json > yuv.json

公式ドキュメント:FFmpeg Filters Documentation : signalstats
続きを読む YUV のデータを数値で表示する signalstats

ffmpeg で 256色を最適化する

16×16(つまり256パターン)のパレットに色を一時出力し、それを使い最適化されたファイルが出力する。これにより最適化されたアニメGIFや、色の少ないPNG圧縮で効果が期待できる。

16×16 のパレットを作る palettegen フィルタと、palettegen フィルタで作られたパレットを元に出力する paletteuse フィルタに分けられる。
続きを読む ffmpeg で 256色を最適化する

ffmpeg でメタデータを加える

特徴

  • メタデータは直接コマンドに書き込むと、メタデータを書き込んだファイルを読み込む2種類の方法がある
  • メタデータファイルは UTF-8 でエンコードされた INI 形式のテキストファイルで構成される
  • ファイル読み込みの場合にはヘッダに識別番号を付けてコマンドに識別番号を指定する
  • メタデータの指定方法は key=value
  • チャプターやストリーム毎にメタデータを指定できる
  • 先頭に [CHAPTER] や [STREAM] を宣言してチャプターやストリームを指定する
  • チャプターでタイムベースを指定できる。指定していない場合はミリ秒とする
    • 例:TIMEBASE=num/den
      チャプターの開始と終了の時間を指定する。(数値は正の整数)
    • 例:START=num, END=num
  • コメントには “;” , “#” が使える
  • 特殊文字(“=”, “;”, “#”, “” と改行)はバックスラッシュ(\)でエスケープする

続きを読む ffmpeg でメタデータを加える