1 голос
 
2510 просмотров
31.10.2020 / 15:52  kuzy4ka

Собрать видео из множества фотографии в FFMPEG

Добрый день! Помогите со скриптом на Windows для сборки видео из фотографии. Камера снимает по 3000 фотографии в каждую отдельную папку. Все пытался как то написать скрипт, но то пути не видет, или еще что то. В идеале хотелось бы - из под папки с папками с изображениями внутри, при исполнении скрипта создавался бы таймлапс. Есть какие то рабочие методы в Линукс, но в нем я как НУБ, а для ВИНДОС ничего не нашел рабочего.
Изм. kuzy4ka от 31.10.2020 / 15:52

2020-10-31 17-42-05 1.jpg (177.01 кб.)
Ответы
 
1 голос
 
# 31.10.2020 / 17:18  aNNiMON
ffmpeg может собрать видео из картинок, но для этого нужно, чтоб в именах была численная последовательность: img001, img002, img003 и т.д.. Как на скриншоте не выйдет, нужно переименовывать файлы. Но способ есть.

1. Копируем нужные изображения в отдельную папку.
2. Выделяем все (Ctrl+A)
3. Жмём переименовать на любом файле (или F2). При этом выделение всех файлов не нужно сбрасывать.
4. Задаём имя img и жмём Enter.
5. Файлы переименуются в img (1), img (2), img (3). Вот с этим ffmpeg уже может работать.
6. Дальше запускаем скрипт:
  1. @echo off
  2.  
  3. rem === input ===
  4. set scale_height=0
  5. set image_duration=5
  6. set image_format=jpg
  7. set framerate=30
  8.  
  9. set opts=-hide_banner -y -v error -stats
  10. if %scale_height% gtr 0 (
  11.   set opts=%opts% -vf scale=-1:%scale_height%
  12. )
  13. set result_name=slideshow_%random%%random%%random%.mp4
  14. ffmpeg -start_number 1 -framerate 1/%image_duration% ^
  15.    -i "img (%%d).%image_format%" ^
  16.    -c:v libx264 -preset ultrafast -crf 0 ^
  17.    -pix_fmt yuv420p -r %framerate% %opts% ^
  18.    %result_name%
  19. echo Saved as %result_name%
  20. pause

scale_height можно указать 720 или 1080, тогда картинки будут отмасштабированы пропорционально до заданной высоты. Если задан в 0, то масштабирования не будет и разрешение видео будет совпадать с разрешением первой картинки.
image_duration задаёт, сколько секунд будет показываться одна картинка.
image_format jpg или png.
И framerate — частота кадров выходного видео.
Изм. aNNiMON от 31.10.2020 / 17:19

slideshow.bat (0.51 кб.)
 
-1 голос
 
# 31.10.2020 / 18:01  kuzy4ka
Спасибо! Теперь мне понятны мои мучения с тем что было)
Всего: 2

Реклама

Мы в соцсетях

tw tg yt gt