ShproT Posted March 20, 2014 Report Share Posted March 20, 2014 Привет! Давненько я тут не был :) Допустим есть видеоролик. Мне нужно сделать превьюшку к нему в гиф. Т.е. нужно захватить несколько кадров на всем протяжении клипа, и слепить их в гиф... Никак не могу найти программу нужную, все что нашел, делает гифку только из определенного отрезка видео, таких гифок во вконтакте полно :) но для меня это не информативно и весит много, да и долго... Хотелось бы , чтоб допустим имея 20 минутный клип, программа каждые 2 минуты вырывала очередной кадр и из них лепила то что мне надо, без лишних заморочек, ну вы поняли :) Если у кого есть на примете подобный софт, буду очень благодарен ) Link to comment Share on other sites More sharing options...
edde Posted March 20, 2014 Report Share Posted March 20, 2014 https://www.google.by/search?q=%D1%81%D0%BB%D0%B0%D0%B9%D0%B4%D1%88%D0%BE%D1%83&ie=utf-8&oe=utf-8&rls=org.mozilla:ru:official&client=firefox-a&channel=sb&gws_rd=cr&ei=VzgrU8DTIdCUhQe7joHgBw#channel=sb&q=%D1%81%D0%BB%D0%B0%D0%B9%D0%B4+%D1%88%D0%BE%D1%83+%D0%B8%D0%B7+%D1%84%D0%BE%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%B9&rls=org.mozilla:ru:official Link to comment Share on other sites More sharing options...
ShproT Posted March 20, 2014 Author Report Share Posted March 20, 2014 не все так просто это все понятно, но задача нарезать с видео кадры автоматически... Поясню - видосов в наличии несколько террабайт, в ручную я это буду делать до глубокой старости поэтому хотелось бы чтоб все выглядело так: настроил программу - выбрал файл - получил готовую гифку. ну или около того... Повторюсь, суть в том, чтоб надергать кадров из всего видео, допустим кадр в минуту или кадр в 2 минуты, а не отрывком от и до. Link to comment Share on other sites More sharing options...
edde Posted March 20, 2014 Report Share Posted March 20, 2014 (edited) Movavi может, но не автоматом гигабайты. Чтобы рыбку съесть нужно потрудиться в любом случае Edited March 20, 2014 by edde Link to comment Share on other sites More sharing options...
Shadow TH Posted March 21, 2014 Report Share Posted March 21, 2014 (edited) Если бы нужно было просто сделать 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 March 21, 2014 by Shadow TH 3 Link to comment Share on other sites More sharing options...
ShproT Posted March 21, 2014 Author Report Share Posted March 21, 2014 Воо, огромное спасибо! То, что нужно! Link to comment Share on other sites More sharing options...
ShproT Posted March 22, 2014 Author Report Share Posted March 22, 2014 (edited) Подскажите еще по скрипту, сам никак не осилю... Работает все как надо, но выходные гифки получаются очень уж ограниченные по цветам, а хотелось бы, чтоб качество графики было приближенно к качеству видео.... Прикрепляю пример отдельно взятого результата. Тут правда еще ничего, просто суть... А на некоторых гифках из-за скудности цветов порой не разглядеть что вообще изображено :) И еще почему-то цикличность не работает, проходит все кадры до конца и останавливается... Edited March 22, 2014 by ShproT Link to comment Share on other sites More sharing options...
edde Posted March 22, 2014 Report Share Posted March 22, 2014 Формат gif имеет ограничение цветовой палитры 256 цветов. Link to comment Share on other sites More sharing options...
Shadow TH Posted March 23, 2014 Report Share Posted March 23, 2014 (edited) Работает все как надо, но выходные гифки получаются очень уж ограниченные по цветам, а хотелось бы, чтоб качество графики было приближенно к качеству видео....Сейчас посмотрел, да, действительно. Там далеко не 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 March 23, 2014 by Shadow TH 2 Link to comment Share on other sites More sharing options...
ShproT Posted March 23, 2014 Author Report Share Posted March 23, 2014 Воо, теперь все отлично! Еще раз спасибо! :) Жаль репутацию поднимать больше нельзя :sm(12): Link to comment Share on other sites More sharing options...
Shadow TH Posted March 23, 2014 Report Share Posted March 23, 2014 Пожалуйста :) Link to comment Share on other sites More sharing options...
gid3574 Posted May 12, 2015 Report Share Posted May 12, 2015 (edited) Здравствуйте! 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 May 12, 2015 by gid3574 Link to comment Share on other sites More sharing options...
Shadow TH Posted May 13, 2015 Report Share Posted May 13, 2015 Скажите пожалуйста, можно ли такой скрипт использовать в программе?В какой программе? Link to comment Share on other sites More sharing options...
gid3574 Posted May 14, 2015 Report Share Posted May 14, 2015 В какой программе? Я делаю "для себя" программу, наподобие конвертера файлов и не только,через ffmpeg получается gif, но как написано выше, с искажением цветов. Мне нужно чтоб цвета в gif были нормальные, а разложить видео на кадры тоже не получается, по написанному выше скрипту из всего видео получается только один кадр и все. Link to comment Share on other sites More sharing options...
Teddy_Bear Posted May 14, 2015 Report Share Posted May 14, 2015 (edited) А установить loglevel в error для диагностики не пробовали? Может info отключен? Какие сообщения об ошибках? Edited May 14, 2015 by Teddy_Bear Link to comment Share on other sites More sharing options...
Shadow TH Posted May 14, 2015 Report Share Posted May 14, 2015 по написанному выше скрипту из всего видео получается только один кадр и все.Судя по всему, в команде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 More sharing options...
gid3574 Posted May 15, 2015 Report Share Posted May 15, 2015 Спасибо, будем подбирать параметры, может что и получится. Link to comment Share on other sites More sharing options...
THE OLD VERMIN Posted May 15, 2015 Report Share Posted May 15, 2015 Не стоит ли разделить эту тему и унести в Поограммирование? Link to comment Share on other sites More sharing options...
Shadow TH Posted May 15, 2015 Report Share Posted May 15, 2015 Думаю, нет. Тема по большей части всё же имеет уклон в сторону видео. Врят ли кто-то, зайдя в раздел "Программирование", будет надеяться там найти тему по конвертированию видео файлов в GIF-анимацию. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now