Я пытаюсь создать gif из видеофайла mp4. Я хочу масштабировать его и обрезать при генерации.
Я добился этого (обрезка и масштабирование) от mp4 до mp4 с помощью строки ниже (так что я могу извлечь png с помощью ffmpeg и использовать Imagick для создания анимированного gif), но я считаю, что есть лучший способ достижение чисто с помощью ffmpeg.
ffmpeg -i in.mp4 -filter:v "scale=300:ih*300/iw, crop=200:500:50:80" -c:a copy out.mp4
У меня вопрос, как добиться того же, что и этот код, но для прямого создания gif из mp4.
Затем я начал настраивать преобразование mp4 в gif, но когда пришла палитра, я не мог полностью понять, что происходит.
Я нашел этот ответ и заставил его работать, однако я не мог понять, как адаптировать масштабирование и обрезку.
$ ffmpeg -y -ss 30 -t 3 -i in.mp4 \
-vf fps=10,scale=320:-1:flags=lanczos,palettegen palette.png
$ ffmpeg -ss 30 -t 3 -i in.flv -i palette.png -filter_complex \ "fps=10,scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" out.gif
Я частично понимаю, что делает этот бит -y -ss 30 -t 3 -i in.mp4
(получение первых 30 секунд и создание из них 3-секундного gif). Но что касается следующих строк, я совершенно не понимаю, что он на самом деле делает.
Было бы замечательно, если бы кто-нибудь мог объяснить, что делает каждая команда, или сослаться на ссылку, объясняющую эту тему.