Малко се позабавлявах да изрязвам gif-чета от AVI-филм.
Необходими инструменти:
ffmpeg за Windows
Faststone Image Viewer
GifSicle за Windows
bash за Windows
Избираме си сцена от филм и виждаме времето на сцената, плюс-минус 1-2 секунди. Аз си избрах Mr. Brooks с бай Кевин Костнър. Плейването можем да го направим с всеки плеър. В случая използвам GOM-player:
Изрязваме сцената до jpeg, като използваме ffmpeg, но преди това влизаме в Bash, за да използваме брояч на файловете:
Ето и командата към ffmpeg:
ffmpeg -i "Mr.Brooks.2007.BRRip.XviD.AC3-SANTi.avi" -qscale 0 -r 23 -ss 00:02:01 -t 3 -f image2 foo-%03d.jpg |
Изпълнението на горната команда ще извлече по 23 кадъра в секунда от AVI-файла и ще ги конвертира до jpg-картинки. Отваряме с FastStone директорията и изтриваме всички ненужни файлове. След това обработваме останалите файлове в Bach-режим, като си настройваме колко да се отреже от картината, намаляме размера и конвертираме всички файлове до GIF-картинки:
Предварително си записваме региона от сцената, който ни интересува. В случая режа регион 424x384px, като започвам от координати x=72, y=0:
След това използваме GifSicle, за да съединим всички GIF-файлове в един общ анимиран файл. Трябва да зададем delay (-d) мили секунди за всеки кадър, командата да цикли за всички GIF-ове последователно (-l *.gif), и името на изходния файл (-o Kostner.gif):
gifsicle -d 4 -l *.gif -o Kostner.gif |
В резултат получаваме една прилична анимация, с която да се бъзикаме със съфорумците :):
А ето и още няколко рязаници от “Z-та световна война” с на Брат Пит бат му:
Ето и кратко видео, което показва подробно стъпките за правене на AVI to GIF animation:
[flv:https://blog.nediko.info/examples/avi_to_gif/Kostner_tutorial.flv examples/avi_to_gif/001.jpg 480 397]
Ако сървара не иска да пусне видеото, може да се изтегли и от тук:
Avi to GIF movie tutorial
==================
Update: 09.12.2016
Има и много по-прост начин за правене на подобни GIF-чета, като се използва само ffmpeg:
ffmpeg -i video.mkv -ss 416 -t 2 -filter:v "crop=500:360:240:30, scale=320:-1" -loop 0 -final_delay -1 out.gif
, където:
-ss 416 – старт на отрязъка. В случая 416-та секунда от видеото.
-t 2 – продължителност на отрязъка. В случая 2 секунди.
crop=500:360:240:30 – изрязва прозорец от горния ляв ъгъл с размери ШxВ: 500x360px. Започва да реже по X и Y: 240px по X и 30px по Y.
scale=320:-1 – преоразмерява видеото на ширина, като запазва съотношението по височина.
-loop 0 и -final_delay -1 – са за да стане видеото на непрекъсната GIF-анимация.
Един пример на анимация, която направих по този начин: