【完全初心者向け】動画の音量差を一括で最適化するハンズオン(Windows11+FFmpeg)
はじめに
WEBやyoutubeなどからダウンロードした動画ファイル(mp4形式)には、音量(ラウドネス)のバラつきがよく見られます。
再生するたびに「音が大きすぎる」「小さすぎる」と感じるのは、音量の中央値(≒ラウドネスレベル)が揃っていないためです。
本記事では、最小の手間で、複数ファイルを一括・自動で「適正音量化」する手順を解説します。
前提条件
- OS:Windows11
- FFmpeg:すでにインストール済みで、パスも通っている(
ffmpeg -version
がコマンドプロンプトで通る) - 対象ファイル:特定フォルダ配下の
.mp4
ファイルすべて
そもそも音量の「最適化」とは?
- 動画編集における音量最適化とは、すべてのファイルを一定の基準ラウドネス(例:-23 LUFS、-18 LUFSなど)に揃える作業を指します。
- 一般的な基準は国や用途で異なりますが、YouTubeや配信用コンテンツでは**-14 LUFS**前後が推奨されています。
LUFSとは?
→ Loudness Units relative to Full Scaleの略。人間の聴感に合わせた実用的な音量指標です。
本記事で目指すゴール
- 特定フォルダのmp4動画すべてに対して
- 音量レベルを一括解析 → 最適な音量に正規化
- 手動作業を最小化し、再現性・自動化できる形にする
必要なもの
- コマンドプロンプト(標準で入っています)
- テキストエディタ(メモ帳でもOKですが、VSCode推奨)
- バッチファイル作成スキル(簡単です!)
実践ハンズオン手順
Step1:作業用フォルダを準備
- デスクトップなどに、作業用フォルダを作成
- フォルダ名例:
C:\Users\あなたの名前\Desktop\videos
- フォルダ名例:
- その中に、音量を整えたいmp4ファイルをすべて入れる。
Step2:必要なFFmpegコマンドを理解する
音量を正規化するには2ステップあります:
- analyze(音量解析)
- normalize(音量補正)
代表的なFFmpegコマンド:
【解析コマンド】
ffmpeg -i input.mp4 -af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=json -f null -
I=-14
:目標ラウドネス -14 LUFSTP=-1.5
:最大ピーク -1.5dBLRA=11
:ラウドネスレンジ11
※このコマンドは画面に解析結果(必要な補正値)を表示するだけ。
【補正コマンド】
ffmpeg -i input.mp4 -af loudnorm=I=-14:TP=-1.5:LRA=11:measured_I=-xx:measured_LRA=-xx:measured_TP=-xx:measured_thresh=-xx:offset=-xx:linear=true:print_format=summary -c:v copy output.mp4
ここで-xx
にはStep1で解析した値を入れる。
Step3:手間を減らすため、バッチファイルを作る
すべて自動化するには、2回処理します:
- 各ファイルの解析結果(json)を保存
- 解析結果に基づいて補正実行
Step4:バッチファイル(スクリプト)作成
① analyze.bat
(解析フェーズ)
@echo off
setlocal enabledelayedexpansion
set "input_folder=C:\Users\あなたの名前\Desktop\videos"
set "output_folder=C:\Users\あなたの名前\Desktop\analyze_results"
mkdir "%output_folder%"
for %%f in ("%input_folder%\*.mp4") do (
set "filename=%%~nf"
ffmpeg -i "%%f" -af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=json -f null - > "%output_folder%\!filename!.json"
)
echo 解析完了!
pause
② normalize.bat
(補正フェーズ)
※解析結果(json)を使って音量正規化するバージョン。
@echo off
setlocal enabledelayedexpansion
set "input_folder=C:\Users\あなたの名前\Desktop\videos"
set "output_folder=C:\Users\あなたの名前\Desktop\normalized_videos"
set "analyze_folder=C:\Users\あなたの名前\Desktop\analyze_results"
mkdir "%output_folder%"
for %%f in ("%input_folder%\*.mp4") do (
set "filename=%%~nf"
for /f "usebackq tokens=*" %%a in ("%analyze_folder%\!filename!.json") do (
set "json=%%a"
)
rem 実際にはjsonから必要パラメータ(measured_I, measured_TP, etc)をパースする必要があるが、
rem 初心者向けに簡単版として「解析せず1回目だけloudnormする」方法も可
ffmpeg -i "%%f" -af loudnorm=I=-14:TP=-1.5:LRA=11:linear=true:print_format=summary -c:v copy "%output_folder%\!filename!_normalized.mp4"
)
echo 正規化完了!
pause
【補足】初心者がつまづきやすい注意点
- パスにスペースが含まれる場合は必ず
"
で囲む。 - ファイル数が多いと時間がかかるので、夜間バッチ推奨。
- 元ファイルは必ずバックアップを取る。
- 完璧な正規化にはjson解析+2パス処理が理想だが、簡易的には1パスでも実用十分。
【参考文献・出典】
- FFmpeg公式ドキュメント:FFmpeg Filters Documentation
- EBU R128規格:EBU Tech 3341
- ITU-R BS.1770標準:ITU Standards
まとめ
本記事では、
**「音量バラバラな動画を、誰でも・再現性高く・無料で一括最適化する方法」**を紹介しました。
一度スクリプトを作れば、次回以降は → フォルダにファイルを入れる → バッチをダブルクリックする
だけで自動処理できます。
これにより、作業時間を圧倒的に削減し、
本来やりたい「動画編集」や「収益化活動」にリソースを集中できます。
コメント