LUFS、いわゆる平均ラウドネス値を調べるebur128
フィルタの使い方。
LUFS(Loudness Unit Referred to Full Scale)とは平均ラウドネス値の単位で、LKFS(Loudness K Weghted Full Scale)とも言われている。
ニコニコ動画にも2020年1月29日(水)より大きすぎる音量感を抑制する方向でのみラウドネスノーマライゼーション(自動音量調整機能)を追加することが発表された。
動画音量の自動調整機能を導入します【PC版ニコニコ動画】|ニコニコインフォ
ニコニコ動画のラウドネスノーマライゼーション(自動音量調整機能)について:ニコニコ窓口:niconico窓口チャンネル(ニコニコ窓口担当) – ニコニコチャンネル:社会・言論
音量測定用AviUtlプラグイン「loudness.auf」 – ニコニコ動画
技術的な話
- t032 | 一般社団法人 日本民間放送連盟
- PDF:民放連技術規準T032「テレビ放送における音声レベル運用規準」
- 4Gamer.net ― 適切な音量について考える。ゲームサウンドの「ラウドネス基準」はどうあるべきか
- テレビ業界から飛び火した「ラウドネス問題」って何だ?SIG-Audio#01「ラウドネス勉強会」レポート | インサイド
- 君は音圧戦争を生き抜けるか? 音楽ストリーミング時代のラウドネス・ウォー対策 (1/3) – ITmedia NEWS
- 人が感じる音の大きさを正規化するとはどういうことか – 音楽/音源情報 – Audiophile JP forum
- トゥルーピークの限界と非情な現実 – 音楽/音源情報 – Audiophile JP forum
- PDF:テレビCM素材搬入基準「音声レベル運用規準」の適用について:web.archive.org より
- PDF:ラウドネスレンジ(LRA)の設定と評価法 – web.archive.org より
- PDF:第 7 回 ラウドネス及び音に関する用語説明と計算式 v1.1
- LUFS/LKFS…ラウドネスメーターについて復習して理解を深めよう | SOUNDEVOTEE.NET
- AES Release Recommendations for Loudness of Audio Streaming and Network File Playback — Pro Tools Expert
- PDF:LOUDNESS NORMALISATION AND PERMITTED MAXIMUM LEVEL OF AUDIO SIGNALS
- EBU Technology & Innovation – Loudness test set
- BS.1770 : Algorithms to measure audio programme loudness and true-peak audio level
基本コマンド
- ラウドネスの値を映像化して再生
ffplay -f lavfi -i "amovie=input.mp4,ebur128=video=1:size=640x480:meter=9[out0][out1]"
- ラウドネスの値を映像化して動画出力
ffmpeg -i input.mp4 -filter_complex "ebur128=video=1:size=640x480:meter=9" -pix_fmt yuv420p output.mkv
- フレーム毎のログ表示
ffmpeg -i input.mp4 -vn -filter_complex ebur128=framelog=info -f null -
- 結果だけをログ表示
ffmpeg -i input.mp4 -vn -filter_complex ebur128=framelog=verbose -f null -
- M:400ミリ秒毎のラウドネス値 の値だけ
ffmpeg -i input.mp4 -filter_complex "[0:a]ebur128=video=1[out1];[out1]crop=64:12:159:4" -pix_fmt yuv420p output.mkv
- S:3秒毎の移動平均ラウドネス値 の値だけ
ffmpeg -i input.mp4 -filter_complex "[0:a]ebur128=video=1[out1];[out1]crop=64:12:231:4" -pix_fmt yuv420p output.mkv
- I:全体の平均ラウドネス値 の値だけ
ffmpeg -i input.mp4 -filter_complex "[0:a]ebur128=video=1[out1];[out1]crop=92:12:337:4" -pix_fmt yuv420p output.mkv
- LRA:ラウドネスレンジ の値だけ
ffmpeg -i input.mp4 -filter_complex "[0:a]ebur128=video=1[out1];[out1]crop=104:12:495:4" -pix_fmt yuv420p output.mkv
- 目盛りだけ
ffmpeg -i input.mp4 -filter_complex "[0:a]ebur128=video=1[out1];[out1]crop=15:452:16:24" -pix_fmt yuv420p output.mkv
- 右のバーだけ
ffmpeg -i input.mp4 -filter_complex "[0:a]ebur128=video=1[out1];[out1]crop=22:434:611:39" -pix_fmt yuv420p output.mkv
- 2つのグラフを比較して再生
ffplay -f lavfi -i "amovie=input.mp4,asplit[1],ebur128=video=1:target=-10[0v][0a];[1]ebur128=video=1:size=640x480:target=0[1v][1a];[0v][1v]hstack[out0];[0a][1a]amix[out1]"
公式ドキュメント:FFmpeg Filters Documentation : ebur128
オプション
- video[boolean]
ラウドネスの値を映像化するかどうか。有効にすると映像と音声の2出力になる
既定値:0(音声だけ) - size[image_size]
ラウドネスの値を映像化したときの解像度。最小値は 640×480
既定値:640×480 - meter[int]
RBU スケールメーター(左のメモリ)の値の最大値
既定値:9
範囲:9 から 18 まで - framelog[int]
1フレーム当たりにログを表示するか - 32, info:表示する。既定値
- 40, verbose:表示しない
- metadata[boolean]
メタデータに表示に切り替える。100ms 毎に1フレーム描写する
既定値:0 - peak[flags]
ピークモードの指定 - none:ピークモードの設定をしない。既定値
- sample:ピークサンプルモード
- true:トゥルーピークモード
- dualmono[boolean]
モノラル入力をデュアルモノラルのように扱う
既定値:0 - panlaw[double]
デュアルモノラルのファイルのパンローを設定する
既定値:-3.0103
範囲:-10 から 0 まで - target[int]
LUFS のどの値の基準を相対的なレベルとして描写するかの指定。波形が見切れる場合に調整する
既定値:-23
範囲:-23 から 0 まで - gauge[int]
ゲージ値の指定 - 0, momentary, m:瞬時。既定値
- 1, shortterm, s:短期
- scale[int]
ラウドネスのスケール値の指定。映像出力のみに影響を与える - 0, absolute, LUFS:絶対値。既定値
- 1, relative, LU:相対値

TARGET:targetの指定
M:400ミリ秒毎のラウドネス値
S:3秒毎の移動平均ラウドネス値
I:全体の平均ラウドネス値
LRA:ラウドネスレンジ
ログ表示の内容
Threshold がどのような値なのかよくわからない。
Integrated loudness: I: 平均ラウドネス LUFS(音量感) Threshold: しきい値 LUFS Loudness range: LRA: ラウドネスレンジ LU Threshold: しきい値 LUFS LRA low: 最小ラウドネス LUFS LRA high: 最大ラウドネス LUFS
adrawgraph の描写例
M、S、I、LRAが最大最小の範囲を指定して描写できる。
ffplay -f lavfi -i "amovie=input,ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-32:max=0"
ffplay -f lavfi -i "amovie=input,ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-32:max=0:mode=bar"
ffplay -f lavfi -i "amovie=input,ebur128=metadata=1,adrawgraph=lavfi.r128.S:min=-32:max=0"
ffplay -f lavfi -i "amovie=input,ebur128=metadata=1,adrawgraph=lavfi.r128.I:min=-32:max=0"
ffplay -f lavfi -i "amovie=input,ebur128=metadata=1,adrawgraph=lavfi.r128.LRA:min=0:max=2"
M、S、Iを同時に表示する。
ffplay -f lavfi -i "amovie=input,ebur128=metadata=1,adrawgraph=m1=lavfi.r128.M:min=-32:max=0:m2=lavfi.r128.S:m3=lavfi.r128.I"
adrawgraph
も同じオプション。
メタデータを映像化する drawgraph, adrawgraph
ametadata の利用例
ametadata
フィルタで表示する例。
ffplay -f lavfi -i amovie=input,ebur128=metadata=1,ametadata=print:key=lavfi.r128.M,ametadata=print:key=lavfi.r128.S,ametadata=print:key=lavfi.r128.I[out0];amovie=input[out1]
fileでテキストに出力する。
ffmpeg -i input -af ebur128=metadata=1,ametadata=mode=print:file=foo.txt -vn -f null -
メタデータをコンソールに表示する metadata, ametadata
運用方法
テレビ放送では-24LUFS ±1dB、PS3では-23LUFS ±2dB、Vitaでは-18LUFS程度とされている。ニコ生では配信内容で目安となる値を変えて、ゲーム配信ならPS3に倣って-23程度に、雑談配信なら-24程度を目標とする。
ニコニコ動画は-15LKFS/LUFSを基準とすることにした。
この値を目標に音量を変更するにはloudnorm
フィルタが最適である。
任意のラウドネス値に音量を調整する loudnorm
具体的な区間で特定の音量に上げ下げするにはvolume
フィルタとタイムライン編集を併用する。
Windows の ffmpeg で生放送する方法 – volume 音量調整
特定の区間だけフィルタを当てるタイムライン編集について
10秒から180秒までvolume
フィルタで2dB上げる。
ffmpeg -i input -af volume=2dB:enable='between(t,10,3*60)' -c:v copy output
複数の区間にフィルタを当てるには複数回volume
フィルタを当てる。
ffmpeg -i input -af volume=2dB:enable='between(t\,10\,3*60)',volume=2dB:enable='between(t\,200\,4*60)' -c:v copy output
その他のオーディオフィルタ。