
ffmpeg で動画の音声を差し替える
本記事にはアフィリエイト広告が含まれます。
音楽動画を書き出した後に音声だけ差し替えたい場合… 動画ソフト(Premireを使ってる)でいちいち再書き出し面倒、と思い ffmpeg を調べてやっと見つけた!
ffmpeg -i *.mp4 -i *.wav -c:v copy -c:a aac -strict experimental -map 0:v -map 1:a output.mp4
映像はコピーでオーディオはaacエンコード、処理もすぐ終わる!
目次
参考にさせて頂きました
FFmpegで動画編集をするガイド – moriyoshiの日記
補足
上の方法にたどり着くまでの…
分離させて結合
元の動画から映像だけ抜き出してから、別の音声を結合…ってしてた
ffmpe -i Track40.mp4 -an -vcodec copy mov.mp4 ffmpeg -i mov.mp4 -i Track41.wav test.mp4
この結合方法では動画もエンコードされてしまい時間がかかるんだけど、
copy で結合する方法を調べて試してもエラーになってしまったので..
エラー1
-vcodec copy -acodec copy すると
ffmpeg -i mov.mp4 -vcodec copy -i Track40.wav -acodec copy test2.mp4
エラー
ffmpeg version git-2014-08-29-be3d807 Copyright (c) 2000-2014 the FFmpeg developers
built on Aug 29 2014 20:10:37 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
configuration: --prefix=/Users/username --libdir=/Users/username/lib --incdir=/Users/username/include --enable-libfaac --enable-libx264 --enable-libxvid --enable-nonfree --enable-gpl --enable-libmp3lame --enable-pthreads --enable-libvpx --enable-libvorbis --disable-mmx --enable-shared --enable-libtheora --pkg-config=pkg-config --enable-version3 --enable-pic --extra-cflags=-I/Users/username/include --extra-ldflags=-L/Users/username/lib
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 1.100 / 56. 1.100
libavformat 56. 3.100 / 56. 3.100
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 0.103 / 5. 0.103
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Track42.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41
creation_time : 2018-12-12 18:36:52
Duration: 00:04:42.77, start: 0.000000, bitrate: 16329 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 16009 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
creation_time : 2018-12-12 18:36:52
handler_name : Alias Data Handler
encoder : AVC Coding
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 317 kb/s (default)
Metadata:
creation_time : 2018-12-12 18:36:52
handler_name : Alias Data Handler
Unknown decoder 'copy'
エラー2
もう一つ調べた方法
ffmpeg -i Track42.mp4 -i Track42.wav -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 output2.mp4
少し違うエラー
ffmpeg version git-2014-08-29-be3d807 Copyright (c) 2000-2014 the FFmpeg developers
built on Aug 29 2014 20:10:37 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
configuration: --prefix=/Users/username --libdir=/Users/username/lib --incdir=/Users/username/include --enable-libfaac --enable-libx264 --enable-libxvid --enable-nonfree --enable-gpl --enable-libmp3lame --enable-pthreads --enable-libvpx --enable-libvorbis --disable-mmx --enable-shared --enable-libtheora --pkg-config=pkg-config --enable-version3 --enable-pic --extra-cflags=-I/Users/username/include --extra-ldflags=-L/Users/username/lib
libavutil 54. 7.100 / 54. 7.100
libavcodec 56. 1.100 / 56. 1.100
libavformat 56. 3.100 / 56. 3.100
libavdevice 56. 0.100 / 56. 0.100
libavfilter 5. 0.103 / 5. 0.103
libswscale 3. 0.100 / 3. 0.100
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 0.100 / 53. 0.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Track42.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41
creation_time : 2018-12-12 18:36:52
Duration: 00:04:42.77, start: 0.000000, bitrate: 16329 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 16009 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
creation_time : 2018-12-12 18:36:52
handler_name : Alias Data Handler
encoder : AVC Coding
Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 317 kb/s (default)
Metadata:
creation_time : 2018-12-12 18:36:52
handler_name : Alias Data Handler
Guessed Channel Layout for Input Stream #1.0 : stereo
Input #1, wav, from 'Track42.wav':
Duration: 00:04:44.38, bitrate: 1411 kb/s
Stream #1:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 44100 Hz, 2 channels, s16, 1411 kb/s
File 'output2.mp4' already exists. Overwrite ? [y/N] y
[aac @ 0x7fe28985da00] The encoder 'aac' is experimental but experimental codecs are not enabled, add '-strict -2' if you want to use it.
[aac @ 0x7fe28985da00] Alternatively use the non experimental encoder 'libfaac'.
お母ちゃん
2018.12.13