
動きを検知すると 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 1
IIRC の設定) では、ビデオ全体に 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