Имеем случай - создание гифчиков из любимых фильмов:
Генерация анимированного gif из видео файла:
ffmpeg -ss 30 -t 3 -i input.mp4 -vf "fps=10,scale=320:-1:flags=lanczos,split[s0][s1]; \
[s0]palettegen[p];[s1][p]paletteuse" -loop 0 output.gif
-ss 30
— означает начало извлечения кадров с 30-й секунды в видео.
-t 3
— означает извлечь следующие 3 секунды из этой точки.
fps=10
— Частоту кадров можно регулировать в зависимости от ваших предпочтений.
scale=320
— это ширина GIF-изображения, высота будет рассчитана автоматически.
input.mp4
— это видеофайл, который может быть любым видеофайлом, поддерживаемым ffmpeg.
Output.gif
— это созданный gif.
Однако всё дело в том, что нужный мне фрагмент может начинаться не с целой секунды (например 00:14:24) и длиться не целое число секунд. Таким образом получается гиф с ненужным содержимым в начале или конце. Как правило там смена кадра, что всё портит. Пробовал указывать длительность 2.5, но он так не работает, округляет.
ДЛИТЕЛЬНОСТЬ выборки:
Видимо нужно указывать сколько брать не секунд, а кадров?
НАЧАЛО фрагмента
Но всё равно в смотрелке видео (smplayer, и я не собираюсь его ни на что менять) я хоть и могу просматривать видео по кадрам, но не могу знать номер начального фрейма, а только секунды.
И вот как быть тут, чтобы гиф начинался точно с нужного кадра? Указывать поправку?
Подскажите с ключами пож-та. Ман читал ниасилил. И так мозг взорвал.
Перемещено hobbit из general