準備
ffprobeで音声が記録されているストリームのmapを確認します
実行例
$ ffprobe 00475.MTS
ffprobe version 2.4.git Copyright (c) 2007-2014 the FFmpeg developers
... (省略) ...
Input #0, mpegts, from '00475.MTS':
Duration: 00:57:33.47, start: 0.567378, bitrate: 8597 kb/s
Program 1
Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 256 kb/s
Stream #0:2[0x1200]: Subtitle: hdmv_pgs_subtitle ([144][0][0][0] / 0x0090), 1920x1080
上記の場合、"0:1" が音声のストリームです
動画ファイルに記録されている音声からMP3ファイルを作成する
ffmpeg -i "00471.MTS" -map 0:1 -vn -ac 2 -ab 256k -acodec libmp3lame -f mp3 "output.mp3"
mapの"0:1"は上の手順で確認したストリームを指定してください
動画ファイルから音声部分をWAVに書き出す
撮影場所の状況やマイクの調整ミスによって音が小さすぎたり大きすぎたりした場合に、一旦WAVに書き出してaudacityで調整してから動画に書き戻す際に使用します
ffmpeg -i "00471.MTS" -map 0:1 -vn -ac 2 -acodec pcm_s24le -f wav "output.wav"
音楽CD用のWAVファイルを作る場合には以下のようにサンプリングレートとビット数を設定します
ffmpeg -i "00471.MTS" -map 0:1 -vn -ac 2 -ar 41000 -acodec pcm_s16le -f wav "output.wav"
動画ファイルの音声部分をWAVファイルの音に置き換える
"-i"オプションを複数使用して、映像と音声のファイルを指定します。"-map"オプションの最初の数字で指定したファイルの順番を示します。以下の例の場合"0:"が"00472.MTS"を指し、"1:"が"00472.wav"を指します。動画ファイルの映像ストリーム(0:0)をcopyして、WAVファイルの音声ストリーム(1:0)をaacにエンコードしてMTSファイルを作成します
ffmpeg -i "00472.MTS" -i "00472.wav" -map 0:0 -c:v copy -map 1:0 -c:a libfdk_aac -profile:a aac_he -afterburner 1 -b:a 256k -strict experimental "output.MTS"
動画ファイルの長さとWAVファイルの長さを揃えてください。そうしないと、正しくシークできなかったり、最後まで再生できないファイルが出来上がってしまいます。