ぬうぱんの備忘録

技術系のメモとかいろいろ

作った曲一覧はこちら

ffmpegで動画ファイルの映像と音声を分離

この記事は

 ffmpegを使って映像+音声の動画ファイルから映像のみの動画ファイルと音声ファイルを作成する方法のメモ。

やりかた

 まずはffmpegに放り込んでどんなストリームが存在するかをチェック

ffmpeg -i source.mp4

 例えば動画のみの抜き出しなら以下の要領(0:映像ストリーム,1:音声ストリーム)

ffmpeg -i source.mp4 -vcodec copy -map 0:0 destination.mp4

 例えば音声のみの抜き出しなら以下の要領(0:映像ストリーム,1:音声ストリーム)

ffmpeg -i source.mp4 -acodec copy -map 0:1 destination.mp4

 例えばまるごとコピーなら以下の要領(0:映像ストリーム,1:音声ストリーム)

ffmpeg -i source.mp4 -vcodec copy -map 0:0 -acodec copy -map 0:1 destination.mp4

申し訳程度の解説

 -mapを使用して元の動画のどのストリームを使用するかを指定する

-map <source_file_index>:<stream_index>

は基本的に0で入力ファイルが複数ある場合は1以降の番号を使う。
はどのストリームをソースとするかの指定。

 -mapだけを指定すると(多分)再エンコードされるので-vcodecとか-acodecで使用するコーデックを指定する。今回はトランスコードとかしないのでcopyでいいのだが、これは指定したい-mapの直前に書く。
まとめると以下の様な書き方をすればOK。

ffmpeg <-i input> <-Xcodec copy -map 0:X> <-Xcodec copy -map 0:X> ... <output>

感想

  • mapの指定方法微妙にわかりづらいっすね