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

Нужно сделать 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
Ссылка на комментарий
Поделиться на другие сайты

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

 

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

 

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

Клип - Заголовок 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
Ссылка на комментарий
Поделиться на другие сайты

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

Жаль репутацию поднимать больше нельзя  :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-анимацию.

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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