JPEG の束からビデオを作成する

JPEG の束からビデオを作成する

動きを検知すると JPEG 画像 (.jpg) を FTP サーバーにアップロードする CCTV カメラがあります。 かなりの数の画像が撮影されるようなので、見やすくするためにビデオにしたいと思っています。

Google 検索を何度か実行しましたが、期待どおりの結果は得られませんでした。使用しているフォルダーには、AyyMMddhhmmssff.jpg という名前の画像が 2000 枚以上あります。名前を変更する必要がある場合は、FFMPEG を動作させるために必要なことが既にわかっているので、変更できます。

ビデオを再生するときに画像が見やすいように、1 秒あたり 1 枚、または 2 枚程度の画像にしたいと思います。そうすると 20 分または 40 分以上のビデオになるのはわかっています。

Windows、macOS、Ubuntu のソリューションならどれでも構いません。私の好みは Windows です (FTP サーバーがそこにあるため)。

イメージマジック

convert *.jpg video.mpg

これは素晴らしい、素敵でシンプルな方法に思えました。しかし、Mac (brew 経由でインストール) と Ubuntu で試してみたところ、どちらもシステムのパフォーマンスが停止し、20 分経ってもまだ完了しませんでした。何もできなかったため、Mac を再起動する必要がありました。

FFMPEG

ffmpeg -y -r 6 -f image2 -s 1920x1080 -i <path>\%06d.jpg -vcodec libx264 -pix_fmt yuv420p <path>/video.mp4

私は FFMPEG の使用に関しては専門家ではありませんが、いくつかのタスクで使用し、非常に便利なユーティリティであることがわかりました。上記のコマンドはビデオを生成しますが、画像の表示が速すぎてビデオの目的が失われます。値を微調整して改善することはできましたが、私が求めているものとは完全には一致しません。1 回の試行 ( -r 1IIRC の設定) では、ビデオ全体に 1 つの画像が表示されました。マニュアルを見たにもかかわらず、FFMPEG コマンドのさまざまな引数を理解していないのは明らかです。

答え1

画像の名前を連番に変更すると、

ffmpeg -y -framerate 1 -i <path>\%06d.jpg -r 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4

000001.jpg、、 ...のように連続番号が付けられます。000002.jpgそれぞれの名前には 6 文字が正確に含まれており、 ffmpeg に渡される を000003.jpg満たすことに注意してください。%06d

名前を変更したくない場合は、次の形式のテキストファイルを作成します。

file first.jpg
file second.jpg
file third.jpg
...
file last.jpg

その後

ffmpeg -f concat -r 1 -i list.txt -r 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4

答え2

-r 5 の代わりに -framerate 5 に変更します。これにより、1 秒あたり 5 フレームのビデオが生成されます。この数値は必要に応じて調整できます。1 では各画像が 1 秒間表示され、10 ではより速く循環表示されます。

ffmpeg -y -framerate 1 -i <path>\%06d.jpg -framerate 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4

or

ffmpeg -f concat -r 1 -i list.txt -framerate 5 -c:v libx264 -pix_fmt yuv420p <path>/video.mp4

関連情報