showspectrum の使い方
入力した音声をスペクトラムとして映像表示する。出力フォーマットは yuv444p。

例
ffmpeg -i input -filter_complex showspectrum=size=640x512:slide=1:mode=separate:color=intensity:
scale=sqrt:saturation=1:legend=1 -pix_fmt yuv420p -acodec copy output
ffplay -f lavfi -i "amovie=input,asplit[out0],showspectrum[out1]"
特定時間の周辺の波形を表示するには出力オプションの
-ssを使う。たとえば30秒前後の画像で出力する。
ffmpeg -i input -ss 30 -filter_complex showspectrum=size=640x512:slide=1:mode=separate:color=intensity:
scale=sqrt:saturation=1:legend=1 -vframes 1 output.png
特定の時間の波形表示を画像で出力するなら
showspectrumpic
フィルタを使う。
不可逆圧縮された音声のカットされた周波数が調べられる showspectrumpic
- size, s[image_size]
出力される動画の解像度(wxh)
既定値:640x512
640x512 で15秒程度の幅になり、282x512 で3秒程度の幅になる
- slide[int]
波形の表示方法
0, replace:波形が左から右に移り右に到達すると左に移動し上書きされる。既定値
1, scroll:波形が右から左に移り常時スクロールする
2, fullframe:解像度分右まで最初から表示して、解像度分新しくなったらすべて更新する
3, rscroll:波形が左から右に移り常時スクロールする
4, lreplace:波形が右から左に移り常時スクロールする
- mode[int]
音声のチャンネルごとに表示するかどうか
0, combined:一纏めに表示。既定値
1, separate:各チャンネルごとに表示
- color[int]
チャンネル毎の色の表示指定
0, channel:チャンネル毎に異なる
1, intensity:チャンネル毎に異ならない。既定値
2, rainbow:虹色。七色
3, moreland:モアランド。青背景に白と赤
4, nebulae:星雲。薄茶系
5, fire:花火。茶系
6, fiery:灼熱。赤系
7, fruit:フルーツ。緑系
8, cool:寒色。青系
9, magma
10, green
11, viridis
12, plasma
13, cividis
14, terrain
- scale[int]
描写で使われる計算方法
0, lin:線形
1, sqrt:平方根。既定値
2, cbrt:立方根
3, log:対数
4, 4thrt:四乗根
5, 5thrt:五乗根
- saturation[float]
表示される色の彩度設定
既定値:1
範囲: -10.0 から 10.0 まで
- 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
19, bohman
- orientation[int]
縦横の内容の表示形式の指定
0, vertical:横軸が時間、縦軸が周波数。既定値
1, horizontal:横軸が周波数、縦軸が時間
- overlap[float]
既定値:0
範囲:0 から 1 まで
- gain[float]
音量を上げ下げして描写具合を変える。0に近いほど色が薄くなる
範囲:0 から 128 まで
既定値:1(音量を変えない)
- data[int]
表示内容の指定
0, magnitude:枠一杯に表示
1, phase:おなじみの波形表示。既定値
- rotation[float]
色を変える
既定値:0
範囲:-1 から 1 まで
- start[int]
調べる周波数の最小値
既定値:0
範囲:0 から INT_MAX まで
- stop[int]
調べる周波数の最大値
既定値:0(無制限)
範囲:0 から INT_MAX まで
- fps[string]
描写のフレームレート
既定値:"auto"
- legend[boolean]
グラフ周辺にある周波数や時間、dBのメーターを表示する
既定値:0
- drange[float]
ダイナミックレンジのdBFSを指定
既定値:120
範囲:0 から 200 まで
- limit[float]
最大のdBFSを指定
既定値:0
範囲:-100 から 100 まで
動画との overlay 合成する ffmpeg のコマンド例
ffmpeg -i input -filter_complex "showspectrum=size=640x512:slide=1:mode=separate:color=intensity: scale=sqrt:saturation=1:legend=1" -pix_fmt yuv420p -vcodec libx264 -acodec copy out.mkv
音声フィルタを当てた場合は先に音声を加工した後に showspectrum を当てる
ffmpeg -i input -filter_complex "earwax,volume=2.6,bs2b=profile=jmeier,bass=g=3:f=400,allpass=f=800, showspectrum=size=640x512:slide=1:mode=separate:color=intensity: scale=sqrt:saturation=1:legend=1" -pix_fmt yuv420p -vcodec libx264 -acodec copy out.mkv
参照リンク
FFmpeg documentation : : showspectrumshowwaves
入力した音声を音声波形(オシロスコープ)として映像表示する。出力フォーマットは RGBA になっているのでオーバーレイが可能。
mode point の例

mode line の例

例
ffmpeg -i input -filter_complex showwaves=size=600x240:mode=point:rate=25:split_channels=1 output
ffplay -f lavfi -i "amovie=input,asplit[out0],showwaves[out1]"
- size, s[image_size]
出力される動画の解像度
既定値:600x240(wxh)
- mode[int]
0, point:点の波形表示。既定値
1, line:山なりの波形表示
2, p2p:点と線の波形表示
3, cline:山なりの波形表示に似ている
- n[int]
描写間隔で正の値を指定する。値を大きくすると表示回数が減る
既定値:0
範囲:0 から INT_MAX まで
- rate, r[video_rate]
おおよその出力フレームレート
既定値:25
- split_channels[boolean]
チャンネル別に表示するかどうか。0にするとチャンネルの数だけ色がミックスされる
既定値:0(しない)
- colors[string]
波形の色指定。チャンネル数毎に | で指定する
既定値:”red|green|blue|yellow|orange|lime|pink|magenta|brown”
- scale[int]
0, lin:線形
1, log:対数
2, sqrt:平方根。既定値
3, cbrt:立方根
- scale[int]
描写で使われる計算方法
0, lin:線形
1, log:対数
2, sqrt:平方根。既定値
3, cbrt:立方根
- draw[int]
0, scale:ダウンサンプルして描写する。既定値
1, full:そのまま描写する
ffmpeg のコマンド例
ffmpeg -i input.wav -filter_complex showwaves=size=600x240:mode=line:r=25 -pix_fmt yuv420p -vcodec libx264 -acodec copy out.mkv
入力動画 fps=24 で背景動画の解像度 640x360 の上に波形映像 640x100 を合成する場合
波形映像に重複フレームが有る場合は showwaves 内の r を +10 程度大きく見積もる
ffmpeg -i input.mp4 -filter_complex pad=iw:ih+100:0:100[a];showwaves=size=640x100:mode=point:r=24[b];[a][b]overlay -pix_fmt yuv420p -vcodec libx264 -acodec copy out.mp4
参照リンク
FFmpeg documentation : : showwavesWindows の ffmpeg で生放送する方法 : padWindows の ffmpeg で生放送する方法 : overlay関連記事
音声をオクターヴ表示する showcqt の使い方追加オプションを追記し、文章を直した。2016年9月8日
追加オプションを追記。2018年11月24日
追加オプションを追記し、文章を直した。2020年8月6日
- 関連記事
-
コメント