ffmpeg 2.3.2 で映像と音声を結合させる
メモです。
ffmpegはバージョンが違うとオプションの使い方が大きく変わったりしますのでご注意ください*1。
ffmpegのバージョン
$ ffmpeg -version ffmpeg version 2.3.2 Copyright (c) 2000-2014 the FFmpeg developers built on Aug 17 2014 23:24:49 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) configuration: --prefix=/usr/local/Cellar/ffmpeg/2.3.2 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-avresample --enable-vda --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libxvid --enable-libvorbis --enable-librtmp --enable-openssl
映像の音声の代わりに音声ファイルを使う
- orig_video_jpn_audio.mp4 の映像(map0のストリーム0)と
- orig_eng_audio.m4a の音声(英語:map1のストリーム0)と
を結合する。
$ ffmpeg -i orig_video_jpn_audio.mp4 -i orig_eng_audio.m4a -map 0:0 -map 1:0 output.mp4 : Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) Stream #1:0 -> #0:1 (aac (native) -> aac (libfaac))
映像の音声も使い音声チャンネルを2チャンネルにする
- orig_video_jpn_audio.mp4 の映像(map0のストリーム0)を使い、音声(日本語:map0のストリーム1)を第2チャンネルに「日本語」として
- orig_eng_audio.m4a の音声(英語:map1のストリーム0)を第1チャンネルに「英語」として
それぞれ設定して結合する。
$ ffmpeg -i orig_video_jpn_audio.mp4 -i orig_eng_audio.m4a -map 0:0 -map 1:0 -metadata:s:a:0 language=eng -map 0:1 -metadata:s:a:1 language=jpn -t 60 output.mp4 : Output #0, mp4, to 'output.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf55.48.100 Stream #0:0(und): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 480x270 [SAR 1:1 DAR 16:9], q=-1--1, 29.97 fps, 30k tbn, 29.97 tbc (default) Metadata: handler_name : VideoHandler encoder : Lavc55.69.100 libx264 Stream #0:1(eng): Audio: aac (libfaac) ([64][0][0][0] / 0x0040), 22050 Hz, stereo, s16, 128 kb/s (default) Metadata: handler_name : SoundHandler encoder : Lavc55.69.100 libfaac Stream #0:2(jpn): Audio: aac (libfaac) ([64][0][0][0] / 0x0040), 32000 Hz, stereo, s16, 128 kb/s (default) Metadata: handler_name : SoundHandler encoder : Lavc55.69.100 libfaac Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264)) Stream #1:0 -> #0:1 (aac (native) -> aac (libfaac)) Stream #0:1 -> #0:2 (aac (native) -> aac (libfaac))
残念ながら Mac の場合は QuickTime でも iTunes でもチャンネル分離せず同時に再生してしまいます。
仕方ないので再生には VLC を使ってください。
*1:-newaudio とか -alang とか…