音声の周波数を映像化する showfreqs


Y軸に振幅、X軸に周波数に変換する showfreqs について。

基本コマンド

ffplay -f lavfi -i amovie=input,showfreqs=s=512x288:mode=bar:ascale=log:fscale=lin:win_size=w2048:win_func=hanning:overlap=1:averaging=1:colors=white

AAC 48.0 KHz 125Kbps の音声


見やすくした例
ffplay -f lavfi -i amovie=input,showfreqs=s=512x288:mode=line:ascale=log:fscale=lin:win_size=w256:win_func=hanning:overlap=1:averaging=5:colors=white

AAC 48.0 KHz 125Kbps の音声を見やすくした例

動画で出力する場合はそのままだと可変フレームの RGBA になるので適宜フレームレートとフォーマットを変換する。
ffmpeg -i input -filter_complex showfreqs=s=512x288:mode=line:ascale=log:fscale=lin:win_size=w256:win_func=hanning:overlap=1:averaging=5:colors=white,fps=30,format=yuv420p output

RGBA を利用して背景を画像に波形をオーバーレイすることも手軽にできる。s=1280×720 で画像のサイズに合わせる。
ffmpeg -i audio.mp3 -loop 1 -i image.jpg -filter_complex "[0:a]showfreqs=mode=line:ascale=log:fscale=log:s=1280x720[sf];[1:0][sf]overlay=shortest=1,format=yuv420p" -c:a copy output
一般的なサンプリング周波数を超えた音声を使うと右端が見切れる

352.8 KHz の音声

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

オプション

  • size, s[image_size]
    映像の解像度。既定値:1024×512
  • mode[int]
    周波数の表示形式の指定

    • 0, line
    • 1. bar:既定値
    • 2, dot
  • ascale[int]
    Y軸の表示単位

    • 0, lin
    • 1, sqrt
    • 2, cbrt
    • 3, log:既定値
  • fscale[int]
    X軸表示形式

    • 0, lin:既定値
    • 1, log
    • 2, rlog
  • win_size[int]
    小さくするほど周波数が荒くなる。既定値:w2048
    2の4乗から2の16乗まで
  • win_func[int]
    波形の表示設定

    • 0, rect
    • 1, bartlett
    • 2, hann, hanning:既定値
    • 3, hamming
    • 4, blackman
    • 5, welch
    • 6, flattop
    • 7, bharris
    • 8, bnuttall
    • 9, bhann
    • 10, sine
    • 11, nuttall
    • 12, lanczos
    • 13, gauss
    • 14, tukey
    • 15, dolph
    • 16, cauchy
    • 17, parzen
    • 18, poisson
  • overlap[float]
    波形を重複させて表示させる。既定値:1(0, 1)
    win_func で指定したオプションが最適化されて表示される
  • averaging[int]
    波形を時間平均させて表示させる
    既定値:1(平均化しない)
    0 はピークだけ表示、大きくするほど表示がゆっくりになる
  • colors[string]
    周波数の色指定:既定値:white
    ‘|’ で複数指定が可能。
    “red|green|blue|yellow|orange|lime|pink|magenta|brown”
  • cmode[int]
    チャンネル毎に個別表示するか

    • 0, combined
      一緒に表示。既定値
    • 1, separate
      個別に表示
  • minamp[float]
    最小振幅の指定。amplitude scale オプション(ascale)の log で使われる
    既定値:1e-006
    範囲:1.17549e-038 から 1e-006 まで

コメントを残す

メールアドレスが公開されることはありません。