FFmpeg使い方動画編集篇〜FFmpegコマンドだけで切り出し、分割、結合、音声抽出などの動画編集作業全部できる
FFmpegというのは画面録画、動画/音楽ダウンロード、動画・音声変換、DVDリッピング、動画・音声編集などの作業を全部できる万能なメディア処理ソフトです。
しかし、一般のメディアソフトとは違って、GUIを持たないツールでUNIXコマンドのように実行しているので、コマンドオプションが分からないなら、FFmpegでの操作はまったくできません。FFmpeg初心者ならイマイチ分からないでしょう。
初心者のために、筆者はAviUtlの使い方について、数篇の文章を作成しました。興味があるなら、下の文章も一緒にチェックしてください。
→ FFmpegでm3u8のURLから動画をダウンロードして保存する方法
→ FFmpeg動画を圧縮する方法
→ FFmpegで生配信を保存する方法
→ FFmpegでAV1を変換する方法
本文は引き続き、FFmpegで動画を編集する方法を説明します。
VideoProc - FFmpegより使いやすい動画編集ソフト
☘ トリミング、クロップ、結合、字幕追加、透かし追加、エフェクト追加、回転、反転、スロモーション作成、タイムプラス動画作成などの編集機能いっぱい;
☘ GIF作成、動画分割、動画を連続静止画に、字幕エクスポート、3D→2D、マルチトラックMKVファイル作成可能;
☘ GoProへの対応を特化して、広角レンズ(フィッシュアイ)補正、ビデオ安定化(手ブレ補正)、雑音ノイズ除去などGoProで撮影した映像をよりきれいにする機能がたくさん搭載;
FFmpegコマンドオプション
FFmpegで動画を編集するには、コマンドオプションを入力しなければなりません。「ffmpeg -h」によってはFFmpegのコマンドオプションが表示できます。
ここでは、便利のために、よく使うオプションなどをの例を以下に挙げます。
メインオプション
- ▶ i 入力ファイル名を設定する。
- ▶ f 出力フォーマットの指定。
- ▶ y 出力するファイル名と同じ名前のファイルが出力先にある場合に上書する。
- ▶ fs 指定したファイルサイズになったら変換を終了する。
- ▶ ss 指定した時間から変換を開始する。
- ▶ title タイトルを設定する。
- ▶ timestamp タイムスタンプを設定する。
- ▶ vsync フレームをカットしたり加えたりして音声に動画を同期させる。
ビデオオプション
- ▶ b 動画部分のビットレートを設定、初期設定は200kbps。
- ▶ r フレームレートの設定 初期設定は25
- ▶ s 動画のサイズを横×縦で設定
- ▶ aspect アスペクト比の設定
- ▶ vn ビデオを無効にする。音声部分のみのエンコードなどに使用する。
- ▶ vcodec ビデオコーデックを設定 設定しない場合は入力ファイルと同じコーデックを使用する。
- ▶ pix_fmt ピクセルフォーマット設定。例えば "-vcodec libx264" 等においてQuickTime、QTKit、AVFoundation (AVKit) 互換にするには "-pix_fmt yuv420p" も合わせて指定。
オーディオオプション
- ▶ ab オーディオの全チャンネル合計(昔はチャンネルごとだった)のビットレートを設定する。
- ▶ ar サンプリング周波数を設定する。
- ▶ ac 音声のチャンネル数を設定する。
- ▶ acodec 音声コーデックを設定する。設定しない場合は動画同様入力されたファイルと同じコーデックを使用する。
- ▶ an 音声を無効にする。ビデオ部分のみのエンコードなどに使用する。
- ▶ vol 通常の音量を256として音量を設定する。(2倍の音量にしたい時は512を指定する。)
FFmpegで動画を編集する前の準備
コマンドを入力する必要があるから、事前に編集したい動画を下記のようにしたらもっと便利だと思います。ちなみに、本文では、入力と出力の形式をMP4と設定されています。
- ▶ 入力をinput.mp4とする.複数の入力動画ファイルがある場合、input1.mp4, input2.mp4, input3.mp4のようにしてください。
- ▶ 出力をoutput.mp4とする.
FFmpeg動画編集方法〜カット
残る部分により、FFmpegで動画をカットする時入力するコマンドオプションも異なります。
開始0秒から指定時間を出力する
- ffmpeg -i input.mp4 -t [切り出す時間] -c copy output.mp4
指定時間までカットし,最後まで出力する
- ffmpeg -ss [切り出す部分の開始地点を動画開始からの秒数] -i input.mp4 -c copy output.mp4
指定時間までカットし,指定した再生時間まで出力する
- ffmpeg -ss [切り出す部分の開始地点を動画開始からの秒数] -t [切り出す時間] -i input.mp4 -c copy output.mp4
指定時間までカットし,指定区間を出力する
- ffmpeg -ss [切り出す部分の開始地点を動画開始からの秒数] -i input.mp4 -t [切り出す時間] -c copy output.mp4
開始0秒から,最後から指定時間前まで出力する.sseof はマイナス時間を指定
- ffmpeg -sseof -[動画最後からのマイナス時間] -i input.mp4 -c copy output.mp4
最後から指定時間さかのぼり、指定時間を出力する
- ffmpeg -sseof -[動画最後からのマイナス時間] -i input.mp4 -t [切り出す時間] -c copy output.mp4
FFmpeg動画編集方法〜結合
・入力をinput.mp4 , input2.mp4とする.
・出力をoutput.mp4とする.
【FFmpegでTSファイルを結合して、MP4へ変換する】
- ffmpeg -i input.mp4 -i input2.mp4 -filter_complex "concat=n=2:v=1:a=1" output.mp4
n は連結するファイル数 ,規定値は3である
v は連結する映像ファイルの可否,規定値は1である
a は連結する音声ファイルの可否,規定値は1である
FFmpeg動画編集方法〜音声抽出
抽出した音源をMP3で保存するのを例にします。
オプションをつけない場合
- ffmpeg -i input.mp4 output.mp3
オプションを明示する場合
- ffmpeg -i input.mp4 -vn -ac output.mp4
FFmpeg動画編集方法〜音声を差し替える
video.mp4 の音声を, audio.mp3 で差し替えます.
- ffmpeg -i video.mp4 -i audio.mp3 -map [0:v] -map [1:a] output.mp4
🌸 -map [0:v]は 入力の0番目,つまりvideo.mp4 の映像(v)データを,出力 output.mp4 に割り当てるという意味です.
🌸-map [1:a]は 入力の1番目,つまりaudio.mp3 の音声(a)データを,出力 output.mp4 に割り当てるという意味です.
これで video.mp4 (つまり [0:a])は無視されたファイルが出来上がります
FFmpeg動画編集方法〜縦横サイズ変更
xxx.mp4の縦サイズを640に変更し、yyy.mp4として保存するコマンドです。scaleのコロンの右側を-1にすることで、アスペクト比が元のままになります。
- ffmpeg -y -i xxx.mp4 -vf scale=640:-1 yyy.mp4
主にサイズを減少させたいときに使います。なお、リサイズした後に、縦横いずれかが奇数になるとエラーが出るので、その場合はscaleをちょっと変更します。
まとめ
FFmpegで動画の編集方法を身につけましたか。コマンドオプションが必要なので、すぐには使いこなせないでしょう。でもFFmpegで動画を数回編集すれば、きっと素晴らしい動画を作成できると思います。また、本文ではFFmpegの一部の使い方が紹介していません。FFmpegについてもっと知りたいなら、コメントしてください。