今までは-loop 1で画像の無限入力はできていたが、これからは音声や映像も無限に入力できるようになった。

ループ回数を指定できる loop, aloop

公式ドキュメント:Main options : ffmpeg Documentation

FFMPEG: Why does the concat filter cause loss of a/v sync/lipsync? – Video Production Stack ExchangeFFmpeg concat video and audio out of sync – Stack Overflowより、-fflags +genptsを追加した。ループするファイルの入力オプションとして使う。1つの入力にフィルタでループなどして時間が長くなるなら出力オプションで使う。

基本コマンド

-1で無限ループ。600秒でカットする。
ffmpeg -stream_loop -1 -fflags +genpts -i input -t 600 -c copy output

3回繰り返す。
ffmpeg -stream_loop 3 -fflags +genpts -i input -c copy output

制限

上のコマンドでループを指定できるがいくつか制限がある。

  • 2入力をループしてマルチトラックなら可能だが、後ろにつなげる場合はループできない
  • concatで取り込んでも複数ファイルのループには対応していない
  • ループしたものをフィルタに取り込んでも1回だけで2回以上ループして取り込めない
  • 音声だけの場合は指定秒でカットできるが、映像は必ずn回の最初から最後までを出力する

用途

メイン映像のBGMに使う。但し1つの音源のみ。複数音源は予め連結しておかなければならない。
ffmpeg -i movie -stream_loop -1 -fflags +genpts -i audio -filter_complex [0:v][1:a]amix output

2つの音声を連結する。連結する数だけ n の値を増やす。
ffmpeg -i audio1 -i audio2 -filter_complex "concat=n=2:v=0:a=1" -vn -fflags +genpts output

2つの映像と音声を連結する。v=1:a=1の値は出力数。
ffmpeg -i input1 -i input2 -filter_complex "concat=n=2:v=1:a=1" -fflags +genpts output

動く映像を右下に配置する。
ffmpeg -i movie -stream_loop -1 -fflags +genpts -i bgv -filter_complex overlay=W-w:H-h output

オーバーレイする映像をクロマキー処理(緑背景)して透過させる。
ffmpeg -i movie -stream_loop -1 -fflags +genpts -i bgv -filter_complex [1:0]chromakey=green:.03:.1[bgv];[0:0][bgv]overlay=W-w:H-h output

関連記事

7 thoughts on “ffmpeg で無限入力が可能に

FFmpeg の使い方 – Site-Builder.wiki へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)