フィルタの挙動について:
ffmpeg: aphasemeter, meaning of measurement – Super User
audio – Calculate Phase angle between two signals i.e. digital Phase meter – Signal Processing Stack Exchange
基本コマンド
ffplay -f lavfi -i "amovie=input,aphasemeter=25:800x400:2:7:1:none:1[out0][out1]"
基本は上から下に流れるので、transpose
フィルタを使って左から右に流すコマンド。
ffplay -f lavfi -i "amovie=input,aphasemeter=25:400x800:2:7:1:yellow:1[out1],transpose=2[out0]"
公式ドキュメント:FFmpeg Filters Documentation : aphasemeter
オプション
- rate, r[video_rate]
フレームレート指定
既定値:25 - size, s[image_size]
解像度指定
既定値:800×400 - rc[int]
位相のR色指定
既定値:2
範囲:0 から 255 まで - gb[int]
位相のG色指定
既定値:7
範囲:0 から 255 まで - bc[int]
位相のB色指定
既定値:1
範囲:0 から 255 まで - mpc[string]
中央値に色をつける
既定値:none - video[boolean]
映像出力する。出力順は音声、映像になる
既定値:1
ステレオストリームで位相のずれたモノラルシーケンスも検出する。 シーケンスの開始、終了、および継続時間が最小セットと同じくらい長く続く場合にログを記録する。
- phasing[boolean]
モノラルおよび位相のずれの検出を有効にする
既定値:0(無効) - tolerance, t[float]
モノラル検出の位相許容誤差を振幅比で設定する
既定値:0
範囲:0から1まで - angle, a[float]
位相のずれを検出するための角度のしきい値を角度単位で設定する
既定値:170
範囲:90から180まで - duration, d[duration]
通知までのモノラルまたは位相外の区間を秒単位で設定する。この値を上回らないと検出しない
既定値:2
メタデータに出力する
出力範囲は -1から1まで。-1に近いほど左右のチャンネルの波形が離れている逆位相で、1に近いほど左右のチャンネルの波形が同じになる。0になると片方のチャンネルが無音状態になる。
コンソールに表示。
ffplay input -af aphasemeter=video=0,ametadata=print:key=lavfi.aphasemeter.phase
ffplay -f lavfi -i "amovie=input,aphasemeter=video=1[out0][out1];[out0]ametadata=print:key=lavfi.aphasemeter.phase[out0]"
映像に表示。
ffplay -f lavfi -i "amovie=input,asplit[out0],aphasemeter=video=0,adrawgraph=lavfi.aphasemeter.phase[out1]"
映像の下にaphasemeter
フィルタの映像を横回転したのと、adrawgraph
フィルタでメタデータを映像化したのを縦に並べる。適宜映像の横幅s。例では1280ピクセルを入力した映像とフレームレートrをそろえる。
ffplay -f lavfi -i "movie=input:s=dv+da[out0][out1];[out1]asplit[out1],aphasemeter=r=30:s=200x1280:mpc=white:video=1[a][v0];[a]adrawgraph=lavfi.aphasemeter.phase:slide=3:s=1280x200:r=30[v1];[v0]transpose=2[v0];[out0][v0][v1]vstack=3"
さらにametadataフィルタでコンソールに表示してdrawgridフィルタで上下50ピクセルごとにグリッド線を引き、avectorscopeフィルタで音声波形を描写する。
ffplay -f lavfi -i "movie=input:s=dv+da[out0][out1];[out1]asplit[out1],aphasemeter=30:200x1280:mpc=white:video=1[a][v0];[a]asplit[a0][a1];[a0]avectorscope=r=30[a0];[a1]ametadata=print:key=lavfi.aphasemeter.phase,adrawgraph=lavfi.aphasemeter.phase:slide=3:s=1280x200:r=30,drawgrid=0:0:0:50[v1];[v0]transpose=2[v0];[out0][v0][v1]vstack=3[v2];[v2][a0]overlay"
ffprobeで扱う。
ffprobe -f lavfi -i "amovie=input,aphasemeter=video=0" -show_entries packet_tags=lavfi.aphasemeter.phase -of csv > aphasemeter.csv
他のメタデータも出力する。
ffprobe -f lavfi -i "amovie=input,aphasemeter=video=0:phasing=1:tolerance=0.5:duration=2" -show_entries packet_tags=lavfi.aphasemeter.mono_start,lavfi.aphasemeter.mono_end,lavfi.aphasemeter.mono_duration,lavfi.aphasemeter.phase -of flat > aphasemeter.txt
扱えるメタデータ。
lavfi.aphasemeter.phase
phasing=1にすると扱える。
lavfi.aphasemeter.mono_start lavfi.aphasemeter.mono_end lavfi.aphasemeter.mono_duration
- 一定間隔で映像に線を引く drawgrid
- 音声をベクトルスコープで表示する avectorscope
- メタデータを映像化する drawgraph, adrawgraph
- メタデータをコンソールに表示する metadata, ametadata