Y軸に振幅、X軸に周波数に変換するshowfreqsフィルタの使い方。出力フォーマットはRGBAの可変フレームレートフレームレートが指定できるようになった

基本コマンド

ffplay -f lavfi -i amovie=input,showfreqs=s=512x288:mode=bar:ascale=log:fscale=lin:win_size=2048: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=256:win_func=hanning:overlap=1:averaging=5:colors=white

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

動画で出力するときは適宜フレームレートとフォーマットを指定する。
ffmpeg -i input -filter_complex showfreqs=s=512x288:mode=line:ascale=log:fscale=lin:win_size=256: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
  • rate, r[video_rate]
    フレームレートの指定
    既定値:25
  • 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]
    小さくするほど周波数が荒くなる
    既定値:2048
    範囲:16 から 65536 まで
  • win_func[int]
    波形の表示設定
    • 0, rect
    • 1, hann, hanning:既定値
    • 2, hamming
    • 3, blackman
    • 4, bartlett
    • 5, welch
    • 6, flattop
    • 7, bharris
    • 8, bnuttall
    • 9, sine
    • 10, nuttall
    • 11, bhann
    • 12, lanczos
    • 13, gauss
    • 14, tukey
    • 15, dolph
    • 16, cauchy
    • 17, parzen
    • 18, poisson
    • 19, bohman
  • overlap[float]
    波形を重複させて表示させる。既定値:1(0, 1)
    win_funcで指定したオプションが最適化されて表示される
  • averaging[int]
    波形を時間平均させて表示させる
    既定値:1(平均化しない)
    0 はピークだけ表示、大きくするほど表示がゆっくりになる
  • colors[string]
    周波数の色指定。’|’ で複数指定できる
    既定値:”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 まで
  • data[int]
    波形の表示方法の設定
    • 0, magnitude:既定値
    • 1, phase
    • 2, delay
  • channels[string]
    表示するチャンネルの設定
    既定値:”all”

コメントを残す

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

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