ffmpeg-waveforms-visualization について
音楽やポッドキャストの映像素材を制作する人向けに、FFmpeg で音声に基づくビジュアルを作るスキルです。波形、スペクトラム、周波数、ステレオ位相の可視化を扱い、静止画・動画・オーバーレイの例を示します。
主な機能
- 01動画・静止波形の生成
- 02スペクトラムと周波数の表示
- 03ステレオ位相とレベルの可視化
- 04色とスケールのフィルター設定
- 05音声ビジュアルの重ね合わせと合成
活用シーン
- 01ポッドキャスト用サムネイルの波形作成
- 02ミュージックビデオへの音声連動表示の追加
- 03スペクトラムアナライザーのオーバーレイ作成
- 04ステレオ位相と音声レベルの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ josiahsiegel/ claude-plugin-marketplace --skill ffmpeg-waveforms-visualizationインストール後、Claude Code で/ffmpeg-waveforms-visualizationを入力して読み込まれたか確認します。
詳細
重要なガイドライン
Windows のファイルパス要件
必須:Windows ではファイルパスに常にバックスラッシュを使用してください
Windows で Edit または Write ツールを使用する場合、ファイルパスにはスラッシュ(/)ではなく、バックスラッシュ(\)を必ず使用してください。
ドキュメント作成のガイドライン
ユーザーから明示的に依頼されない限り、新しいドキュメントファイルを作成しないでください。
クイックリファレンス
| ビジュアライゼーション | フィルター | 出力 | コマンドスニペット |
|---|---|---|---|
| アニメーション波形 | showwaves | 動画 | [0:a]showwaves=s=1280x720:mode=line[v] |
| 静止波形 | showwavespic | 画像 | [0:a]showwavespic=s=1280x240:colors=0x00FF00 |
| スペクトラム | showspectrum | 動画 | [0:a]showspectrum=s=1280x720:color=fire |
| 周波数バー | showfreqs | 動画 | [0:a]showfreqs=s=1280x720:mode=bar |
| ベクトルスコープ | avectorscope | 動画 | [0:a]avectorscope=s=512x512:mode=lissajous |
| カラースキーム | 効果 |
|---|---|
rainbow | 全スペクトラムのグラデーション |
fire | 暖色系のオレンジ/赤 |
cool | 青系の色調 |
viridis | 科学用途のカラーマップ |
このスキルを使用する場面
オーディオのビジュアライゼーション作成に使用します。
- ミュージックビデオの波形背景
- ポッドキャスト動画のサムネイル
- SoundCloud 風の波形画像
- スペクトラムアナライザーのオーバーレイ
- オーディオに反応するビジュアライゼーション
FFmpeg の波形とオーディオのビジュアライゼーション(2025)
FFmpeg を使用して、オーディオの波形、スペクトラムアナライザー、オーディオに反応するビジュアライゼーションを生成するための完全ガイドです。
オーディオビジュアライゼーションフィルター
フィルターの概要
| フィルター | 出力 | 用途 |
|---|---|---|
| showwaves | アニメーション波形の動画 | ミュージックビデオ、ライブ映像 |
| showwavespic | 静止波形画像 | サムネイル、ポッドキャスト |
| showspectrum | スペクトラムアナライザー動画 | 周波数分析 |
| showspectrumpic | 静止スペクトラム画像 | オーディオフィンガープリンティング |
| showfreqs | 周波数バーの動画 | イコライザーのビジュアライゼーション |
| avectorscope | ステレオ位相のビジュアライゼーション | オーディオエンジニアリング |
| ahistogram | オーディオレベルのヒストグラム | ラウドネス分析 |
| showcqt | 定Q変換 | 音符のビジュアライゼーション |
波形の生成(showwaves)
基本的なアニメーション波形
# Simple waveform video
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x720:mode=line[v]" \
-map "[v]" -map 0:a \
-c:v libx264 -c:a aac \
waveform.mp4
# Waveform from video with audio
ffmpeg -i video.mp4 \
-filter_complex "[0:a]showwaves=s=1920x200:mode=line[wave];[0:v][wave]overlay=0:H-200[v]" \
-map "[v]" -map 0:a \
-c:v libx264 -c:a copy \
video_with_wave.mp4
波形モード
# Line mode (default) - connected lines
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=line[v]" \
-map "[v]" waveform_line.mp4
# Point mode - individual points
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=point[v]" \
-map "[v]" waveform_point.mp4
# Filled mode - filled area
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=p2p[v]" \
-map "[v]" waveform_filled.mp4
# Centered line mode
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=cline[v]" \
-map "[v]" waveform_centered.mp4
使用可能なモード
| モード | 説明 |
|---|---|
| point | サンプルごとに点を描画 |
| line | サンプル間に線を描画 |
| p2p | 点から点を描画(塗りつぶし) |
| cline | 中央揃えのラインモード |
色付きの波形
# Single color waveform
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=cline:colors=0x00FF00[v]" \
-map "[v]" green_wave.mp4
# Multi-channel colors (stereo)
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=line:colors=red|blue:split_channels=1[v]" \
-map "[v]" stereo_wave.mp4
# Gradient-style (requires multiple passes)
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=cline:colors=0xFF6600[v]" \
-map "[v]" orange_wave.mp4
レートとスケール
# Adjust waveform speed (n = samples per column)
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=line:n=2[v]" \
-map "[v]" fast_wave.mp4
# Adjust scale (amplitude)
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=line:scale=lin[v]" \
-map "[v]" linear_wave.mp4
# Logarithmic scale (better for quiet audio)
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=line:scale=log[v]" \
-map "[v]" log_wave.mp4
# Square root scale
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=line:scale=sqrt[v]" \
-map "[v]" sqrt_wave.mp4
# Cube root scale (compressed dynamics)
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=line:scale=cbrt[v]" \
-map "[v]" cbrt_wave.mp4
スケールのオプション
| スケール | 説明 | 最適な用途 |
|---|---|---|
| lin | 線形振幅 | 一般用途 |
| log | 対数 | 小さな音量のオーディオ、音声 |
| sqrt | 平方根 | 中程度の圧縮 |
| cbrt | 立方根 | 強い圧縮 |
静止波形画像(showwavespic)
基本的な波形画像
# Generate waveform PNG
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwavespic=s=1280x240:colors=0x00FF00" \
-frames:v 1 \
waveform.png
# High-resolution waveform
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwavespic=s=3840x480:colors=white" \
-frames:v 1 \
waveform_hires.png
スタイル付きの波形画像
# Split stereo channels
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwavespic=s=1280x480:split_channels=1:colors=0xFF0000|0x0000FF" \
-frames:v 1 \
stereo_waveform.png
# Filled style
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwavespic=s=1280x240:colors=0x1E90FF:draw=full" \
-frames:v 1 \
filled_waveform.png
# Scale adjustment
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwavespic=s=1280x240:scale=sqrt:colors=0xFFD700" \
-frames:v 1 \
golden_waveform.png
背景付きの波形
# Waveform on colored background
ffmpeg -i audio.mp3 \
-filter_complex "color=c=0x1a1a2e:s=1280x240:d=1[bg];\
[0:a]showwavespic=s=1280x240:colors=0x00FF88[wave];\
[bg][wave]overlay[v]" \
-map "[v]" -frames:v 1 \
waveform_bg.png
# Waveform on gradient background
ffmpeg -f lavfi \
-i "gradients=s=1280x240:c0=0x000033:c1=0x003366:duration=1" \
-i audio.mp3 \
-filter_complex "[1:a]showwavespic=s=1280x240:colors=0x00FFFF[wave];\
[0:v][wave]overlay[v]" \
-map "[v]" -frames:v 1 \
waveform_gradient.png
スペクトラムのビジュアライゼーション(showspectrum)
基本的なスペクトラムアナライザー
# Animated spectrum
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrum=s=1280x720:mode=combined:color=rainbow[v]" \
-map "[v]" -map 0:a \
-c:v libx264 -c:a aac \
spectrum.mp4
# Vertical spectrum
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrum=s=720x1280:orientation=vertical:color=fire[v]" \
-map "[v]" -map 0:a \
spectrum_vertical.mp4
スペクトラムモード
# Combined channels
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrum=s=1280x720:mode=combined[v]" \
-map "[v]" spectrum_combined.mp4
# Separate channels
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrum=s=1280x720:mode=separate[v]" \
-map "[v]" spectrum_separate.mp4
カラースキーム
# Rainbow spectrum
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrum=s=1280x720:color=rainbow[v]" \
-map "[v]" spectrum_rainbow.mp4
# Fire spectrum
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrum=s=1280x720:color=fire[v]" \
-map "[v]" spectrum_fire.mp4
# Cool spectrum
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrum=s=1280x720:color=cool[v]" \
-map "[v]" spectrum_cool.mp4
# Channel-based colors
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrum=s=1280x720:color=channel[v]" \
-map "[v]" spectrum_channel.mp4
使用可能なカラースキーム
| 色 | 説明 |
|---|---|
| channel | チャンネルの色を使用 |
| rainbow | 虹色のグラデーション |
| moreland | 発散型カラーマップ |
| nebulae | 宇宙のような色 |
| fire | 暖かみのある炎の色 |
| fiery | 鮮やかな炎の色 |
| fruit | 果物をイメージした色 |
| cool | クールな青系の色調 |
| magma | 火山をイメージした色 |
| green | 緑のグラデーション |
| viridis | 科学用途のカラーマップ |
| plasma | プラズマカラーマップ |
| cividis | 色覚多様性に配慮した色 |
| terrain | 地形をイメージした色 |
スペクトラムのスケールとウィンドウ
# Logarithmic frequency scale
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrum=s=1280x720:fscale=log:color=fire[v]" \
-map "[v]" spectrum_log.mp4
# Different window functions
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrum=s=1280x720:win_func=blackman:color=rainbow[v]" \
-map "[v]" spectrum_blackman.mp4
# Higher frequency resolution
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrum=s=1280x720:win_size=4096:color=fire[v]" \
-map "[v]" spectrum_hires.mp4
静止スペクトラム画像(showspectrumpic)
# Full audio spectrogram
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrumpic=s=1920x480:color=fire[v]" \
-map "[v]" \
spectrogram.png
# With legend
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrumpic=s=1920x480:color=rainbow:legend=1[v]" \
-map "[v]" \
spectrogram_legend.png
# Logarithmic frequency scale
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrumpic=s=1920x480:fscale=log:color=viridis[v]" \
-map "[v]" \
spectrogram_log.png
周波数バー(showfreqs)
基本的な周波数表示
# Bar-style equalizer
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showfreqs=s=1280x720:mode=bar:ascale=log:colors=green[v]" \
-map "[v]" -map 0:a \
freqs_bar.mp4
# Line-style frequency display
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showfreqs=s=1280x720:mode=line:colors=cyan[v]" \
-map "[v]" -map 0:a \
freqs_line.mp4
# Dot-style display
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showfreqs=s=1280x720:mode=dot:colors=0xFF00FF[v]" \
-map "[v]" -map 0:a \
freqs_dot.mp4
イコライザー風のビジュアライゼーション
# Classic equalizer bars
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showfreqs=s=1280x720:mode=bar:fscale=log:ascale=log:win_size=1024:colors=0x00FF00[v]" \
-map "[v]" -map 0:a \
-c:v libx264 -c:a aac \
equalizer.mp4
定Q変換(showcqt)
音符のビジュアライゼーション
# Basic CQT visualization
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showcqt=s=1920x1080[v]" \
-map "[v]" -map 0:a \
cqt.mp4
# CQT with axis labels
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showcqt=s=1920x1080:axis=1:text=1:fontfile=/path/to/font.ttf[v]" \
-map "[v]" -map 0:a \
cqt_labeled.mp4
# Custom colors
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showcqt=s=1920x1080:sono_g='st(0, floor(log2(400*meter))); if(gt(ld(0),-2), if(lt(ld(0),0),ld(0)+2, if(lt(ld(0),3),1, 3-ld(0))),0)'[v]" \
-map "[v]" -map 0:a \
cqt_custom.mp4
ベクトルスコープ(avectorscope)
ステレオ位相のビジュアライゼーション
# Basic vectorscope
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]avectorscope=s=512x512:mode=lissajous[v]" \
-map "[v]" -map 0:a \
vectorscope.mp4
# Polar mode
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]avectorscope=s=512x512:mode=polar:zoom=1.5[v]" \
-map "[v]" -map 0:a \
vectorscope_polar.mp4
# With color coding
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]avectorscope=s=512x512:mode=lissajous:draw=line:scale=sqrt[v]" \
-map "[v]" -map 0:a \
vectorscope_color.mp4
オーディオヒストグラム(ahistogram)
レベル分布の可視化
# Basic audio histogram
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]ahistogram=s=1280x720:dmode=separate[v]" \
-map "[v]" -map 0:a \
histogram.mp4
# Combined mode
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]ahistogram=s=1280x720:dmode=combined:slide=scroll[v]" \
-map "[v]" -map 0:a \
histogram_combined.mp4
可視化の組み合わせ
映像に重ねた波形
# Waveform overlay at bottom
ffmpeg -i video.mp4 \
-filter_complex "[0:a]showwaves=s=1920x200:mode=cline:[email protected][wave];\
[0:v][wave]overlay=0:H-200[v]" \
-map "[v]" -map 0:a \
-c:v libx264 -c:a copy \
video_waveform.mp4
# Transparent waveform overlay
ffmpeg -i video.mp4 \
-filter_complex "[0:a]showwaves=s=1920x1080:mode=p2p:[email protected]:scale=sqrt[wave];\
[0:v][wave]blend=all_mode=addition[v]" \
-map "[v]" -map 0:a \
video_wave_blend.mp4
複数の可視化
# Waveform + Spectrum side by side
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]asplit=2[a1][a2];\
[a1]showwaves=s=640x360:mode=cline:colors=green[wave];\
[a2]showspectrum=s=640x360:color=fire[spec];\
[wave][spec]hstack[v]" \
-map "[v]" -map 0:a \
combined_vis.mp4
# Full visualization dashboard
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]asplit=4[a1][a2][a3][a4];\
[a1]showwaves=s=640x240:mode=cline:colors=cyan[wave];\
[a2]showspectrum=s=640x240:color=fire:scale=log[spec];\
[a3]showfreqs=s=640x240:mode=bar:colors=lime[freq];\
[a4]avectorscope=s=640x240:mode=lissajous[vec];\
[wave][spec]hstack[top];\
[freq][vec]hstack[bottom];\
[top][bottom]vstack[v]" \
-map "[v]" -map 0:a \
dashboard.mp4
進行状況バー付きの可視化
# Waveform with animated progress indicator
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwavespic=s=1280x200:colors=0x333333[bg];\
[0:a]showwaves=s=1280x200:mode=cline:colors=0x00FF00:n=4[wave];\
[bg][wave]overlay[v];\
color=c=red:s=4x200:d=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 audio.mp3)[bar];\
[v][bar]overlay=x='t/$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 audio.mp3)*W'[out]" \
-map "[out]" -map 0:a \
waveform_progress.mp4
ポッドキャスト/ミュージックビデオのテンプレート
SoundCloud 風の波形
# Static waveform for music thumbnail
ffmpeg -i audio.mp3 \
-filter_complex "color=c=0x1a1a2e:s=1200x300:d=1[bg];\
[0:a]showwavespic=s=1200x200:colors=0xFF6B00:scale=sqrt[wave];\
[bg][wave]overlay=0:50[v]" \
-map "[v]" -frames:v 1 \
soundcloud_wave.png
ミュージックビジュアライザー動画
# Full music visualizer
ffmpeg -i audio.mp3 -i album_art.jpg \
-filter_complex "[1:v]scale=1920:1080,boxblur=30[bg];\
[0:a]showwaves=s=1920x300:mode=cline:colors=white:scale=sqrt[wave];\
[1:v]scale=400:400[art];\
[bg][wave]overlay=0:H-350[tmp];\
[tmp][art]overlay=(W-400)/2:(H-400)/2-100[v]" \
-map "[v]" -map 0:a \
-c:v libx264 -preset fast -crf 23 -c:a aac -b:a 192k \
music_video.mp4
ポッドキャストの波形動画
# Podcast with waveform and title
ffmpeg -i podcast.mp3 \
-filter_complex "color=c=0x2d3436:s=1920x1080:d=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 podcast.mp3)[bg];\
[0:a]showwaves=s=1920x400:mode=cline:colors=0x74b9ff:scale=sqrt[wave];\
[bg][wave]overlay=0:(H-400)/2[tmp];\
[tmp]drawtext=text='Episode Title':fontsize=72:fontcolor=white:x=(w-tw)/2:y=100[v]" \
-map "[v]" -map 0:a \
-c:v libx264 -c:a aac \
podcast_video.mp4
パフォーマンスの最適化
大容量のオーディオファイル
# Use threading for faster processing
ffmpeg -i long_audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=line:n=4[v]" \
-threads 0 \
-map "[v]" -map 0:a \
-c:v libx264 -preset fast -c:a aac \
output.mp4
ハードウェアアクセラレーション
# NVENC encoding for visualization
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showspectrum=s=1920x1080:color=fire[v]" \
-map "[v]" -map 0:a \
-c:v h264_nvenc -preset fast -c:a aac \
spectrum_nvenc.mp4
トラブルシューティング
よくある問題
「Buffer too small」エラー
# Increase buffer size
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=line:n=1[v]" \
-map "[v]" output.mp4
波形が無音/平坦に見える
# Adjust scale for quiet audio
ffmpeg -i quiet_audio.mp3 \
-filter_complex "[0:a]volume=10,showwaves=s=1280x360:mode=line:scale=log[v]" \
-map "[v]" output.mp4
音声と映像の同期の問題
# Force frame rate
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=line:rate=30[v]" \
-map "[v]" -map 0:a \
-r 30 \
output.mp4
可視化が速すぎる/遅すぎる
# Adjust samples per column (n)
# Higher n = faster scrolling
# Lower n = slower scrolling
ffmpeg -i audio.mp3 \
-filter_complex "[0:a]showwaves=s=1280x360:mode=line:n=3[v]" \
-map "[v]" output.mp4
このガイドでは、FFmpeg によるオーディオの可視化について説明しています。動画のトランジションやエフェクトについては、transitions-effects スキルを参照してください。
コメント
Markdown 対応