Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Нужно сделать gif-превью для видео


ShproT

Рекомендуемые сообщения

Привет!

 

Давненько я тут не был :) 

 

Допустим есть видеоролик. Мне нужно сделать превьюшку к нему в гиф. Т.е. нужно захватить несколько кадров на всем протяжении клипа, и слепить их в гиф... Никак не могу найти программу нужную, все что нашел, делает гифку только из определенного отрезка видео, таких гифок во вконтакте полно :) но для меня это не информативно и весит много, да и долго... Хотелось бы , чтоб допустим имея 20 минутный клип, программа каждые 2 минуты вырывала очередной кадр и из них лепила то что мне надо, без лишних заморочек, ну вы поняли :) Если у кого есть на примете подобный софт, буду очень благодарен )

Ссылка на комментарий
Поделиться на другие сайты

не все так просто  :laugh2: это все понятно, но задача нарезать с видео кадры автоматически... Поясню - видосов в наличии несколько террабайт, в ручную я это буду делать до глубокой старости :crazzzy: поэтому хотелось бы чтоб все выглядело так: настроил программу - выбрал файл - получил готовую гифку. ну или около того... 

 

Повторюсь, суть в том, чтоб надергать кадров из всего видео, допустим кадр в минуту или кадр в 2 минуты, а не отрывком от и до. 

Ссылка на комментарий
Поделиться на другие сайты

Movavi  может, но не автоматом гигабайты. Чтобы рыбку съесть нужно потрудиться в любом случае

Изменено пользователем edde
Ссылка на комментарий
Поделиться на другие сайты

Если бы нужно было просто сделать 10-12 секундные превьюшки по первым кадрам видео (а если нужно где-то из середины, то придётся руками указывать где), я бы посоветовал Format Factory, ибо там можно, автоматом. Но поскольку вам требуется:

надергать кадров из всего видео, допустим кадр в минуту или кадр в 2 минуты, а не отрывком от и до.

то здесь нам помогут 2 замечательные программы - ffmpeg и ImageMagick, а также небольшой скрипт (дабы автоматизировать весь процесс).

Вообще ffmpeg умеет самостоятельно преобразовывать видео в GIF-файлы с указанной частотой кадров. Беда в том, что задержка кадров в таком случае вычисляется автоматически в соответствии с исходным файлом (т.е. если указать частоту кадров 1 кадр в 2 минуты, то полученный GIF файл будет и воспроизводиться именно с такой частотой (что, как я понимаю, не есть хорошо). Поэтому всю процедуру мы разобьём на 2 этапа: преобразование видеофайлов в GIF при помощи ffmpeg, а затем в полученных GIF-ках программой Convert, входящей в состав ImageMagick, мы изменим скорость (задержку) смены кадров в этих GIF-файлах.

Предварительно нужно закинуть исходные видеофайлы в какую-то одну папку на диске, а также создать отдельную папку для получаемых GIF-файлов.

Скачиваем ImageMagick: ссылка, и устанавливаем. К счастью, ffmpeg входит в состав ImageMagick.

Теперь запускаем Блокнот (Notepad): Пуск ==> Все программы ==> Стандартные ==> Блокнот. Вводим туда скрипт:

for %%a in ("директория_с_исходными_видео_файлами\*.*") do (ffmpeg -ss 00:00:00.000 -i "%%a" -r 1/120 -pix_fmt rgb24 -s 320x240 "директория_с_выходными_gif_файлами\%%~na.gif")for %%a in ("директория_с_выходными_gif_файлами\*.gif") do (convert -delay 100 -loop 1 -layers optimize "директория_с_выходными_gif_файлами\%%~na.gif" "директория_с_выходными_gif_файлами\%%~na.gif")
В нужных местах соответственно вписываем свои адреса к папке с исходными видеофайлами и с конечными GIF-файлами.

Небольшие пояснения к параметрам:

ffmpeg:

-ss 00:00:00.000 - время начала анимации.

-r 1/120 - частота кадров с секунду. В данном случае выставлено 1 кадр в 120 секунд, т.е. то, что Вы просили.

-s 320x240 - разрешение получаемых GIF-файлов.

convert:

-delay 100 - задержка между кадрами. 100 - это примерно 4 секунды

-loop 1 - включить циклическое воспроизведение

Сохраняем созданный в Блокноте документ в папке с установленным ImageMagick (это может быть папка вида C:\Program Files (x86)\ImageMagick-6.8.8-Q16), при сохранении указываем расширение имени .bat, затем запускаем его оттуда. Процесс пойдёт.

Изменено пользователем Shadow TH
  • Upvote 3
Ссылка на комментарий
Поделиться на другие сайты

Подскажите еще по скрипту, сам никак не осилю... Работает все как надо, но выходные гифки получаются очень уж ограниченные по цветам, а хотелось бы, чтоб качество графики было приближенно к качеству видео.... 

 

Прикрепляю пример отдельно взятого результата. Тут правда еще ничего, просто суть... А на некоторых гифках из-за скудности цветов порой не разглядеть что вообще изображено :)

 

И еще почему-то цикличность не работает, проходит все кадры до конца и останавливается... :(

Клип - Заголовок 01-Фрагмент1(00_18_08-00_20_46).gif

post-40574-0-06696000-1395517760_thumb.g

Изменено пользователем ShproT
Ссылка на комментарий
Поделиться на другие сайты

Работает все как надо, но выходные гифки получаются очень уж ограниченные по цветам, а хотелось бы, чтоб качество графики было приближенно к качеству видео....

Сейчас посмотрел, да, действительно. Там далеко не 256 цветов получается. Очевидно, это ffmpeg так уродует цвета. Значит, придётся доверить конвертацию непосредственно в GIF не ему, а ImageMagick: сначала разложить каждый видеофайл на набор png-изображений при помощи ffmpeg (благо в png он экспортирует кадры нормально), а затем уже при помощи утилиты convert собирать gif-файлы. Чтобы не было путаниц, создайте ещё одну отдельную папку - для временного хранения png-файлов. Подредактируем скрипт:

 

for %%a in ("директория_с_исходными_видеофайлами\*.*") do (ffmpeg -ss 00:00:00.000 -i "%%a" -r 1/120 -s 320x240 -f image2 "директория_с_png_файлами\%%04d.png"convert -delay 1000 -loop 0 -layers optimize "директория_с_png_файлами\*.png" "директория_с_gif_файлами\%%~na.gif"del /q "директория_c_png_файлами\*.png")
Также сохраняем в bat-файл и кидаем в папку с ImageMagick.

 

И еще почему-то цикличность не работает, проходит все кадры до конца и останавливается...

Я, похоже, немного ошибся. В скрипте у Convert нужно у -loop значение 0, а не 1. В приведённом выше скрипте я исправил. Изменено пользователем Shadow TH
  • Upvote 2
Ссылка на комментарий
Поделиться на другие сайты

Воо, теперь все отлично! Еще раз спасибо! :) 

Жаль репутацию поднимать больше нельзя  :sm(12):

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Здравствуйте!


for %%a in ("директория_с_исходными_видеофайлами\*.*") do (ffmpeg -ss 00:00:00.000 -i "%%a" -r 1/120 -s 320x240 -f image2 "директория_с_png_файлами\%%04d.png"convert -delay 1000 -loop 0 -layers optimize "директория_с_png_файлами\*.png" "директория_с_gif_файлами\%%~na.gif"del /q "директория_c_png_файлами\*.png")

Скажите пожалуйста, можно ли такой скрипт использовать в программе? У меня bat, работает а через программу этот скрипт не работает, получается только один .png файл.

Изменено пользователем gid3574
Ссылка на комментарий
Поделиться на другие сайты

Скажите пожалуйста, можно ли такой скрипт использовать в программе?

В какой программе?
Ссылка на комментарий
Поделиться на другие сайты

 

В какой программе?

 

Я делаю "для себя" программу, наподобие конвертера файлов и не только,через ffmpeg получается gif, но как написано выше, с искажением цветов. Мне нужно чтоб цвета в gif были нормальные, а разложить видео на кадры тоже не получается, по написанному выше скрипту из всего видео получается только один кадр и все.

Ссылка на комментарий
Поделиться на другие сайты

А установить loglevel в error для диагностики не пробовали? Может info отключен?

Какие сообщения об ошибках?

Изменено пользователем Teddy_Bear
Ссылка на комментарий
Поделиться на другие сайты

по написанному выше скрипту из всего видео получается только один кадр и все.

Судя по всему, в команде
ffmpeg -ss 00:00:00.000 -i "%%a" -r 1/120 -s 320x240 -f image2 "директория_с_png_файлами\%%04d.png"
Вам нужно поменять значение -r. Здесь стоит разбивка по одному кадру на 120 секунд. Если же файлы имеют длительность <= 120 секунд, то в итоге после разбивки как раз должен получиться 1 кадр.

Всё зависит от того, какая средняя длительность у всех видеофайлов в Вашем случае. Уже, исходя от неё, следует выставить значение параметра -r.

Ссылка на комментарий
Поделиться на другие сайты

Думаю, нет. Тема по большей части всё же имеет уклон в сторону видео. Врят ли кто-то, зайдя в раздел "Программирование", будет надеяться там найти тему по конвертированию видео файлов в GIF-анимацию.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...