Vlogカメラで録った映像を ffmpeg でいい感じにする
昨年 feiyu pocket 2S というVLogカメラを購入して、旅行中の記録やライブの撮影用に使用しています。
このカメラは、撮影された動画のサイズが大きいと4GB程度で分割して保存するので、Youtubeに1本の動画として上げたりする際には結合をした方が都合が良いです。また、音声はピークに達しないように低めに録音していることもあり、ついでに音声も整えた方が見やすい動画になります。
私は、この断片動画ファイルの結合に ffmpeg を使用しています。毎回やり方を忘れるのでこの記事で自分用のメモとしてまとめます。
分割された動画ファイルから音声だけの1本wavをつくる
まずは分割された動画ファイルから音声だけを切り出します。音声として1本に切り出すのは、後続のマスタリング処理が1本の音声ファイルじゃないと(確か)できないためです。
まずは動画ファイルの一覧を記載しているテキストファイルを作成します。ファイル名が VCAM_0000.MP4 ~ VCAM_0004.MP4 の連番である場合は以下のようなテキストファイル files.txt
を作成します。このファイル内の順番がそのまま結合される順番になります。
file VCAM_0000.MP4
file VCAM_0001.MP4
file VCAM_0002.MP4
file VCAM_0003.MP4
file VCAM_0004.MP4
このテキストファイルを指定して結合された音声ファイルを作成します。
ffmpeg -f concat -safe 0 -i files.txt -vn out.wav
音声をマスタリングする
出力した音声の音量を適切にするために音量を調整します。私はYoutubeに限定公開でアップして共有することが多いので、Youtubeで適したラウドネスを意識して簡易的なマスタリングをします。
ここの設定は割といろいろやり方あると思います。
ffmpeg -i out.wav -vn -af "loudnorm=I=-14:LRA=11:TP=-1.5,acompressor=threshold=0.05:ratio=4:attack=200:release=1000" -ar 44100 -ac 2 mastered.wav
パラメータの説明
-
-vn
- 音声のみを処理 -
-af
- 音声のフィルターを適用-
loudnorm=I=-14:LRA=11:TP=-1.5
- YouTubeの推奨ラウドネス値に合わせる -
acompressor=threshold=0.05:ratio=4:attack=200:release=1000
- ダイナミックレンジを調整するコンプレッサー
-
-
-ar 44100 -ac 2
- サンプリングレート44.1kHz、ステレオ出力
音声を動画に結合する
最後に、音声と元の動画をつないだものを結合して1つの動画ファイルにします。
ffmpeg -f concat -safe 0 -i files.txt -i mastered.wav -c:v copy -c:a aac -b:a 320k -map 0:v:0 -map 1:a:0 output.mp4
入力ファイルに最初の手順で作成したテキストと処理した音声ファイルの2つを設定するのがポイントです。
この2つの入力を、後述のパラメータ設定 map
を使ってそれぞれの入力から映像と音声を使用します。
パラメータの説明
-
-c:v copy
- 映像はそのままコピー(再エンコードなし) -
-c:a aac -b:a 320k
- 音声はAACコーデックで320kbpsのビットレートに設定 -
-map 0:v:0 -map 1:a:0
- 1つ目の入力から映像、2つ目の入力から音声を使用
おわりに
以上、ffmpegを使って分割された動画ファイルを結合し、音声をマスタリングする方法を紹介しました。この手順で、Vlogカメラで撮影した複数の動画ファイルを簡単に一本の高品質な動画にまとめることができます。
ffmpegは非常に多機能なツールなので、ここで紹介した以外にも様々な処理が可能です。自分の用途に合わせてパラメータを調整してみてください。
更にいい感じの設定がございましたらコメントで教えてもらえると嬉しいです。
Discussion