これは何

Macで画面収録をするとマルチチャンネルで収録される。(多チャンネルのオーディオインターフェースを繋いでいる場合)

適当に画面録画したものがMac以外のデバイスでうまく再生できないことがあるので、雑にこれをステレオに変換する際のチートシート。

前提

    ffmpeg -version
    ffmpeg version N-121838-g76827a6f3b Copyright (c) 2000-2025 the FFmpeg developers
    built with Apple clang version 16.0.0 (clang-1600.0.26.6)
    configuration: --prefix=/usr/local/ffmpeg-custom --enable-gpl --enable-nonfree --enable-version3 --enable-shared --extra-cflags=-I/opt/homebrew/include --extra-ldflags=-L/opt/homebrew/lib --enable-libaom --enable-libdav1d --enable-libmp3lame --enable-libopus --enable-libsnappy --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libharfbuzz --enable-libfdk-aac --enable-videotoolbox --enable-audiotoolbox --enable-libzimg --cc=clang
    libavutil      60. 18.100 / 60. 18.100
    libavcodec     62. 19.100 / 62. 19.100
    libavformat    62.  6.103 / 62.  6.103
    libavdevice    62.  2.100 / 62.  2.100
    libavfilter    11.  9.100 / 11.  9.100
    libswscale      9.  3.100 /  9.  3.100
    libswresample   6.  2.100 /  6.  2.100
    
    Exiting with exit code 0

チャンネル構成の確認

変換対象のファイル確認

ffprobe -i input.mov

各チャンネルの内容を確認

# 5秒目から10秒間を抽出する。各チャンネルの音声を確認できる
for i in {0..19}; do
  ffmpeg -ss 5 -t 10 -i input.mov -af "pan=mono|c0=c$i" ch$i.wav
done

必要なチャンネルだけでステレオミックス

基本パターン:特定チャンネルをステレオに

# ch0をL、ch1をRに
ffmpeg -i input.mov -filter_complex "[0:a]pan=stereo|c0=c0|c1=c1" -c:v copy output.mov

複数チャンネルをミックス

# ch4,5とch8,9をミックス(シンセ+Macループバック)
ffmpeg -i input.mov -filter_complex "[0:a]pan=stereo|c0=c4+c8|c1=c5+c9" output.wav
 
# 音量バランスを調整(シンセ70%、Mac30%)
ffmpeg -i input.mov -filter_complex "[0:a]pan=stereo|c0=0.7*c4+0.3*c8|c1=0.7*c5+0.3*c9" output.wav

倍速処理

音声のみ倍速

  • atempoは0.5〜2.0の範囲。それ以上は複数回適用: atempo=2.0,atempo=1.5 で3倍速
# 2倍速
ffmpeg -i input.mov -filter_complex "[0:a]pan=stereo|c0=c4+c8|c1=c5+c9,atempo=2.0" -vn audio_2x.aac
 
# 1.5倍速
ffmpeg -i input.mov -filter_complex "[0:a]pan=stereo|c0=c4+c8|c1=c5+c9,atempo=1.5" -vn audio_1.5x.aac

映像も含めて倍速

# 映像と音声を2倍速
ffmpeg -i input.mov -filter:v "setpts=0.5*PTS" -filter_complex "[0:a]pan=stereo|c0=c4+c8|c1=c5+c9,atempo=2.0" output.mov

映像と音声を別々に処理する

# 音声だけ先に処理
ffmpeg -i input.mov -filter_complex "[0:a]pan=stereo|c0=c4+c8|c1=c5+c9,atempo=2.0" -vn audio_2x.aac
 
# 映像を倍速(音声なし)
ffmpeg -i input.mov -filter:v "setpts=0.5*PTS" -an video_2x.mov
 
# 合成
ffmpeg -i video_2x.mov -i audio_2x.aac -c:v copy -map 0:v:0 -map 1:a:0 output.mov

互換性の高いMP4への変換

ffmpeg -i input.mov -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 192k output.mp4
# デバイスによる色の見え方の違いを減らしたい場合
ffmpeg -i input.mov -c:v libx264 -preset medium -crf 23 -pix_fmt yuv420p -c:a aac -b:a 192k output.mp4

チャンネル構成

自分の場合は以下の通りに繋いである。

  • ch0: マイク入力
  • ch1: ギター/ベース ライン入力
  • ch2-3: MIDIキーボード(L/R)
  • ch4-5: Reface CS(L/R)
  • ch6-7: 未使用
  • ch8-9: Macループバック(L/R)

実際の使用例

# シンセとMacだけミックスして2倍速
ffmpeg -i input.mov -filter:v "setpts=0.5*PTS" -filter_complex "[0:a]pan=stereo|c0=c4+c8|c1=c5+c9,atempo=2.0" -c:v libx264 -preset medium -crf 23 -pix_fmt yuv420p -c:a aac -b:a 192k output.mp4

Tips

  • -crf値: 小さいほど高画質(18=高品質、23=標準、28=低品質)