FFmpeg: почему gif увеличивается в размере?

Автор iormark, 23 марта 2016, 16:33:07

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

iormark

Здравствуйте, необходимо изменить GIF


ffmpeg -i 1.gif -vf scale=800:-1 -y 2.gif

гиф из исходного 2мб превращается в 8мб

Самое интересное, что раскодирую оба гифа в гимпе сохраняю по одному кадру и один кадр весит под 100кб, всего 75 кадров, соответственно так и получается по размеру ~8мб. Я не могу понять почему исходная гифка весит всего 2 мб и как добиться такой же магии?

Тот же эффект с convert и gifsicle
convert 1.gif -resize '800x<' 2.gif
gifsicle --resize-fit-width 800 -i 1.gif > 2.gif

sidbar

Devuan GNU/Linux

endru

#2
дело в том, что при конвертировании ты используешь jpg формат, а это полноценный кадр - и естественно размер увеличится. Чтобы уменьшить размер нужно использовать другой формат изображения.
Т.е. тебе нужно взять гифку, вытащить из нее кадры в формате png, изменить их размер, и собрать в гифку. сложно не правда ли?

Поэтому посмотри пакет gifsicle

# Указать масштаб 50%
gifsicle --scale 0.5 -i 1.gif > 2.gif

# Указать размер
gifsicle --resize 300x200  -i 1.gif > 2.gif

iormark

Цитата: sidbar от 23 марта 2016, 21:43:23А без изменения размера?
Без разницы.

Цитата: endru от 24 марта 2016, 06:20:55нужно взять гифку, вытащить из нее кадры в формате png, изменить их размер
Ну с другими же гифками окей, gifsicle и так юзал и так пофиг, гифку до 5.5 максимуму удалось ужать

endru

прощу прощения. не заметил что уже пробовал использовать gifsicle.
проблема в следующем: исходная GIF была сжата по качеству, на кадрах очень много шумов! - поэтому при конвертировании получается такая большая гифка.
нужно избавляться от шумов, попробуй например так:
gifsicle --resize-fit-width 800 --optimize -O3 --colors 16 -i 1.gif > 2.gif