2秒ごとにフレームの画像に変換したいビデオがあります。
たとえば、ビデオの長さが 15 fps で 7 秒の場合、フレーム 1、31、61、91 を取得したいと考えています。
コマンド:
ffmpeg -i foo.mp4 -r 0.5 -f image2 -vcodec mjpeg foo%d.jpg
私が望むことをしているように見えますが、どのフレームを取得しますか? 1, 31, 61, 91 または 30, 60, 90 または 13, 43, 73, 103?
最終的には、ffmpeg チュートリアルから主に借用した次のことを行いました。
ffmpeg -v 3 -vsync 0 -sameq -i movie.mpr -f image2 "images-%03d.jpeg"
これにより、ムービーの各フレームが 1 からムービーの最後までの JPEG として取得されます。次に、スクリプト言語を使用してこれらのファイルをフィルタリングし、フレーム レートが 30 fps であることを認識して、60 フレームごとに取得しました。
最初の画像は最初のフレームからのものです。
期待した画像がさらに 1 つか 2 つ得られる可能性があることに注意してください。これは、丸めおよび/またはffmpegが最終的な画像を作成するためだと思います。例: あなたの動画の長さは本当に 7 秒ですか? それとも7.63秒の長さですか?