「ステレオをモノラルにする」だけなら -ac 1 で終わりです。ただ、-ac 1 が左右をどう混ぜているのか、pan フィルタで自分で書くと何が変わるのか、モノラルにしたのにファイルサイズが減らないのはなぜか、といった点は意外と説明されていません。本記事では同じ音声を各方法で変換し、音量を volumedetect で測って違いを示します。

動作確認: FFmpeg 8.1 / Windows — 本記事のコマンド 15 件を検証スクリプトで実行し、全て成功しました(2026-09-06)

ステレオ → モノラル: -ac 1

ffmpeg -i input.mp3 -ac 1 output.mp3

動画の音声だけモノラルにするなら、映像は -c:v copy で触らずに済みます。

ffmpeg -i input.mp4 -c:v copy -ac 1 -c:a aac output.mp4

-ac 1 は左右を「0.5 ずつ足している」

左右に同じ音(−19.1 dB)が入ったステレオ音源を各方法でモノラル化し、volumedetect で平均音量を測った結果です。

方法 平均音量 元との差
元のステレオ −19.1 dB
-ac 1 −19.1 dB ±0
pan=mono|c0=0.5*c0+0.5*c1 −19.1 dB ±0
aformat=channel_layouts=mono −19.1 dB ±0
pan=mono|c0<c0+c1 −19.1 dB ±0
pan=mono|c0=c0+c1 −13.0 dB +6.1 dB

-ac 1 は「L と R を 0.5 倍ずつ足す」((L+R)/2)と同じで、音量は変わりません。一方、panc0+c1 と書くと単純加算になり、同じ音が両側に入っている部分は 6 dB 大きくなります

c0+c1 はクリップする

+6 dB がどれくらい危険かを見るため、ピークが −0.1 dBFS(ほぼ最大)のステレオ音源で c0+c1 を試したところ、volumedetect の結果は最大 0.0 dB、0 dB 帯のサンプル数が **441,000 サンプル中 310,400(約 70%)**でした。つまり音の大半が天井に張り付いて歪んでいます。

pan で足し算をするときは、係数の合計が 1 を超えないようにする(0.5*c0+0.5*c1)か、< を使います。

ffmpeg -i input.mp3 -af "pan=mono|c0=0.5*c0+0.5*c1" output.mp3
ffmpeg -i input.mp3 -af "pan=mono|c0<c0+c1" output.mp3

c0<c0+c1< は「係数の合計が 1 になるように自動で正規化する」記法で、c0+c1 なら 0.5 ずつになります。元の音量を保ちたいときはこちらが安全です。

片方のチャンネルだけ残す

「右だけノイズが乗っている」「マイクが左にしか入っていない」ときは、片チャンネルを両側に配ります。

ffmpeg -i input.mp3 -af "pan=mono|c0=c0" output.mp3

これは左(c0)だけをモノラルにしたもの。ステレオのまま左の音を両側に出すなら次です。

ffmpeg -i input.mp3 -af "pan=stereo|c0=c0|c1=c0" output.mp3

c0/c1 の代わりにチャンネル名 FL/FR も使えます(pan=stereo|c0=FL|c1=FL)。動画に適用する場合は -c:v copy を付けます。

ffmpeg -i input.mp4 -c:v copy -af "pan=stereo|c0=c0|c1=c0" -c:a aac output.mp4

左右を入れ替える

ffmpeg -i input.mp3 -af "pan=stereo|c0=c1|c1=c0" output.mp3

channelmap=map=FL-FR|FR-FL でも同じことができますが、入力がステレオでないとエラーになります。pan は入力のチャンネル数に関係なく動くので、こちらを覚えておけば十分です。

モノラル → ステレオ

ffmpeg -i input.mp3 -ac 2 output.mp3

同じ音が両側に複製されるだけなので、音の広がりは変わりません。ファイルサイズは(同ビットレートなら)変わりません(後述)。「ステレオ感」を足したいなら extrastereostereotools を使いますが、元がモノラルの音源では効果はほぼありません。

ffmpeg -i input.mp3 -af "extrastereo=m=2.5" output.mp3

extrastereo は L と R の差分を強調するフィルタで、m=1 が原音、m>1 で広がり、m<1 で狭まります。元々ステレオの音源を「もう少し広く」したいときに使うもので、値を大きくしすぎると位相が崩れて中央の音(ボーカルなど)が痩せます。

L / R を別ファイルに分ける・戻す

channelsplit は出力が 2 本になるので -af ではなく -filter_complex で書きます。-af に書くと「複数の出力ラベルを持つフィルタは使えない」というエラーになります。

ffmpeg -i input.mp3 -filter_complex "channelsplit=channel_layout=stereo[left][right]" -map "[left]" left.wav -map "[right]" right.wav

2 本のモノラルファイルをステレオに戻すには join を使います。

ffmpeg -i left.wav -i right.wav -filter_complex "[0:a][1:a]join=inputs=2:channel_layout=stereo[a]" -map "[a]" output.wav

amerge でも結合できますが、amerge は入力のチャンネルを順番に並べるだけでレイアウト情報を持たないため、-ac 2 などで明示するのが無難です。片チャンネルずつ別処理(左だけノイズ除去など)をしたい場合の入口としてこの分割・結合を使います。

ステレオを微調整する(L/R を少し混ぜる)

左右が完全に分離した音源(ボーカルが左だけ、ギターが右だけの古い録音など)を聴きやすくするには、少しだけ反対側に混ぜます。

ffmpeg -i input.mp3 -af "pan=stereo|c0=0.8*c0+0.2*c1|c1=0.2*c0+0.8*c1" output.mp3

係数の合計を各行 1.0 にしておけば音量は変わりません。

5.1ch をステレオにダウンミックスする

映画ソースなど 5.1ch の音声をステレオにする場合、-ac 2 でも FFmpeg 内蔵のダウンミックス係数が使われますが、センター(台詞)が小さく感じることがあります。台詞をはっきりさせたいなら pan で係数を書きます。

ffmpeg -i input.mkv -c:v copy -af "pan=stereo|FL=0.5*FC+0.707*FL+0.707*BL+0.5*LFE|FR=0.5*FC+0.707*FR+0.707*BR+0.5*LFE" -c:a aac output.mp4

FC(センター)と LFE(低音)を両側に 0.5、サラウンドを 0.707(−3 dB)で足しています。係数の合計が 1 を超えているのでクリップの余地はありますが、5.1ch ミックスでは全チャンネルが同時にピークになることはまれで、実用上はこの係数がよく使われます。心配なら FL<...< 記法で正規化してください。

モノラルにしてもファイルが小さくならない理由

CBR 128 kbps の MP3 をモノラルにしても、ファイルサイズは 160,958 バイトで完全に同じでした(30 秒)。ビットレートは「1 秒あたりのデータ量」なので、チャンネル数を減らしても同じビットレートなら同じサイズです。

モノラル化でサイズを減らすには、ビットレートを下げるか VBR にします。モノラルなら同じ品質でも半分近いビットレートで済むので、-b:a 64k-q:a 5 を明示してください。

ffmpeg -i input.mp3 -ac 1 -b:a 64k output.mp3

よくある質問

-ac 1pan=mono|c0=0.5*c0+0.5*c1 はどちらを使うべき?

結果は同じです。他のフィルタ(loudnorm など)と組み合わせるなら -af の中で順番を制御できる pan のほうが扱いやすく、単純にモノラル化するだけなら -ac 1 で十分です。

L と R が逆位相の音源をモノラルにすると消える

L と R に同じ音を逆位相で入れた音(pan=stereo|c0=c0|c1=-1*c0 で作れます)は、足すと打ち消し合って無音になります。古い「疑似ステレオ」音源で起きる現象で、この場合は片チャンネルだけ残す(pan=mono|c0=c0)のが正解です。

stereotoolspan の違いは?

pan は「どのチャンネルを何倍して出すか」の行列指定、stereotools は Mid/Side 変換・位相反転・バランス・ステレオ幅など DAW のステレオツール相当の処理をまとめたフィルタです。stereotools=mode=lr>ms で L/R を Mid/Side に変換できますが、通常の変換用途では pan で足ります。

関連記事