クリップ整理に便利!ffmpegで複数音声トラックの動画を切り出す方法

クリップ整理に便利!ffmpegで複数音声トラックの動画を切り出す方法

OBSで録画した動画をサクサクっとffmpegで必要な部分だけ切り出したい時のメモです。

マルチトラックのまま切り抜き、Premiere ProでQuickTime形式で書き出したときよりグッと容量が小さくなるのでクリップ保存の容量を抑えたいときにも活躍します!

ただ、ffmpegはコマンドラインツールなので、黒い画面に文字を入力してアレコレすることに抵抗がない・慣れていないとちょっと難しいかもです…

スポンサーリンク

やりたいこと

OBSでゲーム音・マイク・VCをそれぞれ別トラックになるように録画したクリップを、後でキル集などを作る時に使いやすいように必要なシーンだけに切り出しておきたい…

でも、後で音声をどう処理するかわからないから音声トラックは分けたままにしたい…

前にPremiere ProでQuickTime形式で書き出したら、マルチトラックで保存はできたものの、容量が1GBを超える事態となり、ストレージ容量的に使いづらい状態でした…

なので、今回は保存容量を抑えつつ、マルチトラックで映像を切り抜きすることを目標とします!

ffmpegとは

今回使うのは「ffmpeg」というコマンドラインツールです。

動画や音声の変換などかなり多機能なツールで、単体で使うのはなかなか難しい部分もありますが、何かと活躍します。

詳細やインストール方法についてはこの記事では割愛しますので、必要があれば調べてみてください。

ja.wikipedia.org
www.ffmpeg.org

複数トラックを保ったまま動画を切り出す

サンプルコマンド

それでは早速コマンドサンプルです。

ffmpeg -ss 00:30 -to 00:50 -i input.mp4 -c:v copy -c:a copy -map 0:0 -map 0:1 -map 0:2 -map 0:3 output.mp4

▲こちらのコマンドは「input.mp4という動画ファイルの30秒〜50秒のトラック1~4を切り出してoutput.mp4として保存する」といった感じです。

開始位置・終了位置について

開始位置は-ssオプション、終了位置は-toオプションで指定できます。

開始位置・終了位置ともにHH:mm:ss形式での指定がわかりやすくていいと思います。(他に秒数指定もあります)

HH(時間)部分は省略できるので、今回のように数分のクリップの一部を切り抜く場合はmm:ss形式での指定が楽でいいですね!

-ss 00:30 -to 00:50で30秒の位置から50秒の位置までとなります。

トラックのマップについて

トラックの指定をしない場合、映像トラックと音声トラックがそれぞれ1つずつ書き出されます。

音声トラックが複数ある場合は-mapオプションを使ってトラックを含めてあげる必要があります。

-map 0:0 -map 0:1 -map 0:2 -map 0:3でトラック0~3番までの4トラックを使う指定です。トラックは音声の他に映像もあるので注意が必要です。

動画のトラック情報は「ffmpeg -i [ファイル名]」で見ることができます。

~中略~
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 10015 kb/s, 60 fps, 60 tbr, 15360 tbn, 120 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]
  Stream #0:2(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 50 kb/s
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]
  Stream #0:3(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 38 kb/s
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]

▲ここらへんがトラックの情報です。
(Premiere Proでトラックとして扱える部分。ちゃんとした名前はストリーム?)

#0:0~#0:3まであり、#0:0はVideoなので映像、それ以外はAudioなので音声です。

書き出してみる

▲それではコマンドをつかって動画を書き出してみます!

約2分ある元ファイルを見ながら、だいたい33秒〜55秒の部分を切り出してみます。

コマンドはこちら▼

ffmpeg -ss 00:33 -to 00:55 -i input.mp4 -c:v copy -c:a copy -map 0:0 -map 0:1 -map 0:2 -map 0:3 output.mp4

無事22秒の動画を切り出せました!音声トラックも3つ保ったままです!

動画容量は約29MB。元のファイルが約152MBだったのでQuickTime形式で書き出したときよりもかなり小さくなりました!

これでクラウドストレージに放り込みやすくなりました!

マルチトラックのまま欲しいとこだけ切り出せて満足

ffmpegで欲しいところだけマルチトラックのまま切り出せて容量も圧縮できて大満足です!

今後はこの記事からコマンドをコピーして秒数のとこだけ変えて実行すればいいので楽ちんですね〜

録音している音声トラック数がゲーム音・マイク・VCなど、3トラックであればほぼ同じコマンドでいけるので使ってみてください!

ではまた。