Obsでマルチトラックの動画を撮ったときの編集手順

もともとは、スクリーンリーダーありなしのゲーム動画を1発で撮りたかった

OBS でマルチトラックの動画を録画する設定にします。そのやり方は一部設定を思い出せないのでまた今度書きます。

とにかく、スクリーンリーダーの声だけが別のトラックに録画されるようにすればいいです。

で、それはまあおいおい書くとして、今回はそれをいい感じにスクリーンリーダーありなしの動画に分ける方法です。順序が逆かもしれませんが気にしません。覚えてないので!

まずはストリームを全部分離する

OBS でマルチトラックとして録画した動画は、各トラックが別々のオーディオストリームとして動画に書き込まれます。

ffmpeg -i 撮った動画のファイル名

とすると、 stream 0 が動画、 stream 1 と 2 がオーディオになったりしているのがわかります。

今回は、 stream 1 にゲームと自分の声、 stream 2 にスクリーンリーダーの声を入れました。

これを、以下のコマンドでそれぞれのストリームのファイルに分けます。

ffmpeg -i 撮った動画のファイル名 -map 0:v -c copy video_h264.mp4 -map 0:a:0 -c copy audio0_aac.aac -map 0:a:1 -c copy audio1_aac.aac

OBS の標準録画形式からいじっていなければ、各ストリームのコーデックの設定はこれでいいはずです。 mp4 だったら、動画ストリームには mp4 の拡張子を付けて、音声ストリームには拡張子 aac を付けたらいいということです。

これで、音が入ってない動画と、自分の声とゲーム音が録音されたファイルと、スクリーンリーダーの声だけが入った音声ファイルができます。

読み上げありなし動画にミックスダウンする

読み上げなしの動画は、映像と音声を1対1で混ぜるだけなので簡単です。

ffmpeg -i video_h264.mp4 -i audio0_aac.aac 書き出したいファイル名

これだけです。簡単ですね。

ただ、なんかよくわかりませんが、音声ありの動画を作ろうとした瞬間にいきなり日本語でおkって感じになります。こうです。

ffmpeg -i video_h264.mp4 -i audio0_aac.aac -i audio1_aac.aac -c:v copy -filter_complex "[1:a][2:a] amix=inputs=2:duration=longest [audio_out]" -map 0:v -map "[audio_out]" 書き出したいファイル名

難しそうな filter_complex のへんから解説すると、

  • フィルターという機能を使いますよ
  • amix という種類のフィルターを使いますよ、これは音声ストリームをミックスするフィルターですよ
  • フィルターに渡す引数は、ダブルクオートの中にあるやつですよ
  • フィルターから出てきたやつに audio_output という名前を付けますよ
  • 書き出すファイルには、映像ストリームとして最初のファイルの映像ストリームを使用し、音声ストリームとしてさっきフィルターから出して名前を付けておいた audio_output の中身を使いますよ

まあこんな感じです。これぐらいわかってればたぶん十分です。応用も利くでしょう。

はい、これだけです。

え? OBS でマルチトラックはどうやるのかって?

それがちょっと最後のほうだけ設定を忘れちゃったんだって。思い出したら書きます。

(っていって永遠と書かれなくて、あとからなんだっけと思ってこのブログを見返した自分自身が困る未来が見える)