Jump to content
СофтФорум - всё о компьютерах и не только

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


ShproT
 Share

Recommended Posts

Привет!

 

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

 

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

Link to comment
Share on other sites

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

 

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

Link to comment
Share on other sites

Если бы нужно было просто сделать 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, затем запускаем его оттуда. Процесс пойдёт.

Edited by Shadow TH
  • Upvote 3
Link to comment
Share on other sites

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

 

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

 

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

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

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

Edited by ShproT
Link to comment
Share on other sites

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

Сейчас посмотрел, да, действительно. Там далеко не 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. В приведённом выше скрипте я исправил. Edited by Shadow TH
  • Upvote 2
Link to comment
Share on other sites

  • 1 year later...

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


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 файл.

Edited by gid3574
Link to comment
Share on other sites

 

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

 

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

Link to comment
Share on other sites

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

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

Edited by Teddy_Bear
Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...