見出し画像

切り抜き動画を作る時に役立つffmpegコマンド

切り抜き動画を作る時、動画編集ソフトを使って編集することが一般的だと思います。ところが、動画を切り抜いたり、スナップショットを撮ったりはffmpegを使って、コマンドベースでも出来ちゃいます。このコマンドを使って切り抜きスクリプトを作っておくと、切り抜きのルーチーンをある程度自動化することが出来ます。ここでは、切り抜き動画作成に役立つffmpegのコマンドをまとめておきます。

動画の一部を切り抜く

切り抜き動画を作る上で必須の作業ですね。全体の動画から、開始・終了時刻を指定して切り抜いた動画を出力します。

ffmpeg -i -ss [開始秒数] 入力動画.mp4 -t [切り抜く秒数] 出力動画.mp4

元々の動画で6分(=360秒)の時点から7分の時点までを切り抜きたい場合は、[開始秒数]を360、[切り抜く秒数]を60を指定します。

動画の一場面を画像化する(スナップショットを撮る)

動画のサムネイルを作る時に、動画の一場面のスナップショットを撮ります。

ffmpeg -i 入力動画.mp4 -ss [スナップショットの秒数] -t 1 -f mjpeg スナップショット.png

動画の何秒目の画像が欲しいというのを、[スナップショットの秒数]に設定します。

画像に文字を入れる

これもサムネイルを作る時に便利な機能です。ffmpegは動画編集だけでなく、画像の編集もできてしまいます。

ffmpeg -i 入力画像.png -filter_compmlex "drawtext=\
fontfile=[フォントファイルのパス]\
:text=[文字]\
:fontsize=[フォントサイズ]\
:bordercolor=[文字枠の色]\
:borderw=[文字枠の幅]\
:fontcolor=[文字の色]\
:x=[横方向の文字の位置]\
:y=[縦方向の文字の位置]" 出力画像.png

文字の装飾はオプションをカスタマイズすることで、かなり自由度高く設定出来ます。オプションの意味はほぼ文字通りですが、注意が必要なオプションについて以下に説明します。

[フォントファイルのパス]にはフォントファイルのパスを指定します。例えば、Macの場合「/System/Library/Fonts/ヒラギノ角ゴシック W7.ttc」などを指定します。

[文字枠の色]や[文字の色]には、blueやroyalblueなど色の名前を指定するか、#ff0000のようにカラーコードで指定します。

[横方向の文字の位置],[縦方向の文字の位置]では、位置を数字で入力するのですが、画像の幅(w)や高さ(h)、文字の幅(text_w)や高さ(text_h)を使って指定すると便利です。例えば、
x=(w-text_w)/2:y=(h-text_h)/2
と指定すると、画像の中央に文字を配置します。

動画の上にワイプ動画を埋め込む(ピクトインピクチャ)

メインの動画の上に別の動画を小さく表示したい場合に使います。

ffmpeg -i メインの動画.mp4 -i ワイプ動画.mp4 -filter_complex\
"[1:0]scale=200:200[ov];[0:0][ov]overlay=x=0:y=0" 出力動画.mp4

scaleでワイプの幅・高さを指定して、overlayのx,yでワイプの位置を指定します。今の場合は、x=0:y=0で左上にワイプが配置されます。

ワイプ動画をグリーンバックで作成して透過したい場合は、下のようにコマンドを変更します。

ffmpeg -i メインの動画.mp4 -i ワイプ動画.mp4 -filter_complex\
"[1:0]colorkey=green:0.5:0[colorkey];\
[colorkey]scale=200:200[ov];[0:0][ov]overlay=x=0:y=0" 出力動画.mp4

字幕ファイルを使って字幕を埋め込む

文字を表示するタイミングと表示したい文字をファイルにまとめておけば、下のコマンドを使って一括で字幕を埋め込んだ動画を作成することができます。

ffmpeg -i 動画.mp4 -vf subtitles=[字幕ファイル.srt]:force_style='\
OutlineColor=[文字の枠の色],\
Fontsize=[フォントサイズ]' 出力動画.mp4

[字幕ファイル.srt]には以下のようなフォーマットで、字幕を表示するタイミングと表示する文字を記入したファイルを指定します。

1
00:00:10.000 --> 00:00:15.000
10秒目

2
00: 01:00.000 --> 00:01:05.000
一分経過

無音を検出する

無音を自動的にカットする時に便利なのが、無音を検出する機能です。

ffmpeg -i 動画.mp4 -af silencedetect=n=[無音の閾値]:d=[無音の長さ] \
-f null - 2> 検出結果.txt

無音の検出は音量がn以下の大きさの時間が、d秒続いた場合に行われます。[無音の閾値]には無音として検出する音の大きさを、[無音の長さ]には検出される無音の長さを秒数で指定します。

動画を繋げる

複数の動画を繋げる場合に使う機能です。上の無音の検出と組み合わせて、無音部分だけを覗いた切り抜き動画のファイルを作って最終的に繋げるなどの使い方ができます。

ffmpeg -f concat -safe 0 -i [結合する動画のリスト] -c copy 出力動画.mp4

[結合する動画のリスト]には次のように動画のファイル名を一覧で並べたファイルを指定します。

file '/path/to/動画1.mp4'
file '/path/to/動画2.mp4'
file '/path/to/動画3.mp4'

この記事が気に入ったらサポートをしてみませんか?