FFMPEG を使用して、一定の間隔で変化する単色のビデオを生成するにはどうすればよいでしょうか?

FFMPEG を使用して、一定の間隔で変化する単色のビデオを生成するにはどうすればよいでしょうか?

テスト目的で、10 fps でフレームごとに黒一色と白一色の間で変化するビデオを生成したいのですが、FFMPEG を使用してこれを実行するにはどうすればよいですか?

答え1

簡単な答えは「ffmpeg フィルターの仕組みを 3 時間かけて勉強する」です。今日は楽しみのためにそれをやったので、この質問をチャレンジとして使いました。

結果を得るにはいくつかの方法があるようですが、私にとってうまくいったのは次の方法です:

  1. 黒い画像と白い画像を生成し、それぞれにimg-001.pngとという名前を付けますimg-002.png

  2. から学んだ の機能ffmpegを使用する-loopこの回答は画像から動画への変換作業にのみ適用されます

画像の生成:

ffmpeg -f lavfi -i color=black:1920x1080:d=3,format=rgb24 -frames:v 1 -y img-001.png

ffmpeg -f lavfi -i color=white:1920x1080:d=3,format=rgb24 -frames:v 1 -y img-002.png

次の画像を 10 fps で 30 秒間ループします。

ffmpeg -loop 1 -i 'img-%03d.png' -r 10 -t 30 -vf format=yuv420p -y out.mp4

ffprobeこのメタデータを報告します:

(edited for clarity)
Duration: 00:00:30.00, start: 0.000000, 
Video: h264 (High) yuv420p
1920x1080 [SAR 1:1 DAR 16:9], 20 kb/s, 10 fps

このGISTには別のアプローチがあるを使用しますfilter_complex。まったく同じことを行っているわけではありませんが、このタスクに適応させることができます。

関連情報