Как соединить изображения в видео с помощью ffmpeg

Преобразовать скриншоты в видео (визуально получится видео рабочего стола ускоренное в 300 раз, 10 Мбит)

60 кадров в секунду, кодек h264, записать в файл с названием как у текущей директории с добавкой «-60fps.avi»
ffmpeg -f image2 -i %d-screen.png -r 60 -vcodec h264 ../`basename \`pwd\``-60fps.avi

Соединить файлы вида tt_img_00034.jpg в видео 2 кадра в секунду

Сохранить в каталог выше текущего

ffmpeg -f image2 -r 2 -i tt_img_%05d.jpg -r 2 -vcodec h264 ../cartoon06-2fps.mp4

Закодировать с битрейтом около 30mbit/sec

ffmpeg -f image2 -r 30 -i %05d.jpg -r 30 -vcodec h264 -r 30 -b:v 30000k ../assembler686h264-30mbit-30fps-08.mp4

Соединить и увеличить количество кадров в 10 раз, сохранить в 4 кадра в секунду

ffmpeg -f image2 -r 2 -i tt_img_%05d.jpg -r 2 -pix_fmt yuv444p -f yuv4mpegpipe - | yuvfps -s 1:1 -r 10:1 | yuvfps -r 4:1 -c | ffmpeg -f yuv4mpegpipe -i - -y ../cartoon06-inter-20fps-01.mp4

  • ffmpeg -f image2 — источник — изображения
  • -r 2 — два кадра в секунду
  • -i tt_img_%05d.jpg — брать файлы вида «tt_img_00034.jpg»
  • -r 2 — чтобы ffmpeg понял, что надо реально 2 кадра в секунду в исходном видео-потоке
  • -pix_fmt yuv444p — формат представления цветов в видео-потоке
  • -f yuv4mpegpipe — | — не писать в файл, а передавать результат в выходной поток в формате «mpeg»
  • yuvfps -s 1:1 -r 10:1 | — замедлить в 10 раз (придумать промежуточные кадры интерполяцией)
  • yuvfps -r 4:1 -c | — установить скорость кадров 4 кадра в секунду, не делая ничего с самими кадрами
  • ffmpeg -f yuv4mpegpipe -i — -y ../cartoon06-inter-20fps-01.mp4 — записать выходной файл с перезаписью

Увеличить количество кадров в 30 раз. Получается 30 кадров в секунду, причём 28 между двумя соседними создаются интерполяцией кадров:

ffmpeg -f image2 -r 2 -i tt_img_%05d.jpg -r 2 -s 1440x1080 -pix_fmt yuv444p -f yuv4mpegpipe - | yuvfps -w -s 1:1 -r 30:1 | ffmpeg -f yuv4mpegpipe -i - -y ../cartoon06-inter-30fps-06.mp4

Считывает изображения «какбы» в 10 fps, потом преобразут 10fps в 30fps (дорисовывает 2 кадра между двумя исходными кадрами), сохраняет с 30fps

ffmpeg -f image2 -r 10 -i %05d.jpg -r 10 -pix_fmt yuv444p -f yuv4mpegpipe - | yuvfps -w -s 10:1 -r 30:1 | ffmpeg -f yuv4mpegpipe -i - -y -vcodec h264 -r 30 -vb 30m ../assembler686x3frames-30fps-10.mp4