フィルタの挙動について:
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]"

ピクセル数はそのままに映像を回転させる transpose

公式ドキュメント: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
aphasemeter の表示例

メタデータに出力する

出力範囲は -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

関連フィルタ

コメントを残す

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

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