LINUX.ORG.RU

Как в Linux сконвертировать видео в GIF?

 , , , ,


0

1

Подскажите, чем в Linux делаются такие вещи? Есть ли такая функция в Kdenlive? Просто он есть в репозитории, и я его уже установил.

Нашел еще Gifcurry.

https://github.com/lettier/gifcurry/blob/master/CHANGELOG.md#3000

Но в репозитории его нет, а со снапами я не дружу.

ffmpeg -v warning -i file.mp4 -vf "fps=24,scale=360:-1:flags=lanczos,palettegen" -y /tmp/palette.png ffmpeg -v warning -i file.mp4 -i /tmp/palette.png -lavfi "fps=24,scale=360:-1:flags=lanczos [x]; [x][1:v] paletteuse" -y file.gif

С фильтрами сам играйся.

beresk_let ★★★★★
()
Последнее исправление: beresk_let (всего исправлений: 1)
Ответ на: комментарий от beresk_let

Фильтры мне вроде не надо, только вырезать полноразмерный кадр в конкретном промежутке времени и превратить его в gif.

shkolnik_2019
() автор топика
Ответ на: комментарий от beresk_let

Я там посмотрел ключ -r (это фпс). Какой обычно выставляют фпс гифкам, если хочется чтобы плавнее была? Как в видео?

shkolnik_2019
() автор топика
Ответ на: комментарий от beresk_let

Спасибо, в целом получилось, хотя даже с низким разрешением гифки какие-то жирные, и какой-то странный эффект в виде «сетки», хотя может это специфика формата, вроде на многих гифках так.

shkolnik_2019
() автор топика

ImageMagick тоже может:

convert -layers Optimize -set delay 5 file.avi file.gif
xaizek ★★★★★
()

Ребят, подскажите, а какой размер 1-минутной гифки (из фильма) приемлем? И какое обычно принято разрешение выставлть таким гифкам? Хочется вырезать смешной момент и запостить, но если выставить -vf scale=720:-1, то минутная гифка весит больше 50 мегов. Юзать 512?

shkolnik_2019
() автор топика

Вроде рекомендуют гифки делать не больше 512 пикселей по горизонтали. Почекал гуглкартинки, там большинство гифок 500-512 пикселей, в принципе они неплохо масштабируются, может и правда нет смысла делать большое разрешение.

shkolnik_2019
() автор топика

Забавно, заметил что если делать гифки из старых рипов формата avi, в таком же разрешении как и фильм (например 480p), то итоговая гифка получается в 4 раза больше по размеру. И это при том, что она даже звук не хранит! Как такое возможно?

А еще при риповании авишек возникает такое сообщение:

No accelerated colorspace conversion found from yuv420p to bgr8.

В результате все-равно рипуется, но сама гифка почему-то проигрывает видео в 2 раза медленнее, чем в фильме. При том что частоту кадров указываю такую же, которую показывает VLC.

shkolnik_2019
() автор топика
Ответ на: комментарий от stevejobs

Стив Джобс, ты же гений (хоть и мертвый), ты то должен знать! Подскажи, почему гифки с avi в том же разрешении и фпс что и в оригинальном видео - получаются в 4-5 раз толще? Да и не только с avi, вот mp4 файлы тоже, с них гифки получаются большие... Походу так с любого видео.

shkolnik_2019
() автор топика

Я всегда считал, что смысл гифок в том, что можно запостить прикольный отрывок из фильма, не вырезая сам кусок фильма, который весит немало. Но гифка с аналогичными параметрами (480p, 25 fps) весит аж в 4 раза больше, аналогичного куска avi. Разве это справедливо?

shkolnik_2019
() автор топика

А чем можно измерить длину (время) гифки? Чтобы проверить, что время действительно получилось правильным, и нет косяков с фпс.

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

Нет конечно. Просто это в кой то веки нормально написанная гуевая софтина для создания гифок, там интуитивный интерфейс и она сразу из коробки решает часть вопросов. У нас она стала чем-то вроде стандарта для выкладывания гифок в статьях (там где надо показать, как щелкаются кнопочки, итп). Если бы ты был маководом, это было бы идеальное решение. А вот ставить виртуалку макоси ради неё, думаю, совершенно излишне, лучше изучить ffmpeg

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

А не знаешь, можно ли задавать милисекунды в ffmpeg? Формат 00:00:00 не всегда подходит, нужно записать видео с определенной секунды, но вначале гифки влезает кадр с другой сцены, что совершенно портит всю гифку... А если передвинуть на секунду вперед, то весь прикол теряется.

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

тебе поможет 00:01:02.500

Но только учти, что в реальности у тебя видео работает не в терминах миллисекунд, а терминах фреймов, и в реальности у тебя видео начнётся не с этой миллисекунды, а с достаточно близкого места, с которого ffmpeg смог что-то восстановить (а в каких-то неудачных случаях первым кадром будет вообще месиво). Так что доверяй, но проверяй

stevejobs ★★★★☆
()

Вроде 2020 на подходе и логичнее было бы выкладывать видео на сайты. Но нет, тормозной, уродский и огромный gif все ещё жив :(

skyman ★★★
()
Ответ на: комментарий от UNiTE

Онлайн не интересно, хотя для кого-то тоже вариант. По мне эти сервисы сродни «закачай фотки своих домашних, чтоб убрать красные глаза» вместо того, чтобы заюзать Gimp. Конечно тут не персональные данные, а мемасики из фильмов, но все-равно почему-то противно... На чем зарабатывают такие сервисы?

shkolnik_2019
() автор топика
Ответ на: комментарий от skyman

Да я видел, щас многие встраивают плееры с wemb, как-бы вместо gif. Не знаю что лучше. У некоторых на сайтах плееры, проигрывающие gif, прямо с кнопкой stop/play.

shkolnik_2019
() автор топика
Ответ на: комментарий от stevejobs

Еще раз спасибо за совет. Я предполагал, что именно такой формат он может поддерживать, но т.к. нигде в примерах не видел милисекунд, то даже не стал сначала пробовать, а оно действительно есть и работает.

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

ВК и телега конвертят гифки назад в видео, так что если планируется публикация там, то размер не важен.

KivApple ★★★★★
()

А можно ли как-то ставить гифку на паузу? Например, чтобы проверить первый и последний кадр. Вроде Gwenview паузить не умеет.

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

открыть в GIMP

ffmpeg-ом отрезать самое начало и конец, и вот их уже открывать. Иначе процесс затянется на ночь, если ты открываешь что-то там достаточно большое, гимп - живтоне небыстое

stevejobs ★★★★☆
()
Ответ на: комментарий от shkolnik_2019

Справедливо.

GIF – отвратительный допотопный формат, который популярен сугубо по историческим причинам. И сжатие в нём допотопное, оно хорошо жмёт только картинки с однотонной заливкой, типа мультиков; реальные съёмки и прочие сложные изображения он сжимает крайне плохо, любой видеокодек справится лучше.

В одном кадре GIF поддерживает максимум 256 цветов. Поэтому для сжатия съёмок приходится имитировать остальные цвета дизерингом (той самой сеткой). Причём ffmpeg мог бы рассчитывать оптимальную набор цветов для каждого кадра, если бы ты использовал команду из первого поста – но ты поумничал и использовал более простую, с ней используется универсальная палитра, с которой дизеринга будет ещё больше. И кстати, области с дизерингом не сжимаются вообще, поэтому чем меньше дизеринга, тем не только выглядеть лучше будет, но и весить меньше.

Если не критичен именно GIF, лучше и не возись с этой фекалией мамонта, а используй WebP: он почти всеми современными браузерами и просмотрщиками картинок поддерживается. Ну или хотя бы APNG – он весит больше, чем WebP, но чуть универсальнее.

anonymous
()
Ответ на: комментарий от shkolnik_2019

минутная гифка весит больше 50 мегов

Это нормально дли гифки.

Как такое возможно?

Анигифки - говно из нулевых. Вот как.

crutch_master ★★★★★
()
Ответ на: комментарий от stevejobs

Я сделал попроще. Если спамить в редакторе F5, то дальше 1го кадра не идешь, видно что никакой фигни нет. Правда последний так не чекнишь, но мне важнее 1й.

shkolnik_2019
() автор топика
Ответ на: комментарий от anonymous

Причём ffmpeg мог бы рассчитывать оптимальную набор цветов для каждого кадра, если бы ты использовал команду из первого поста – но ты поумничал и использовал более простую, с ней используется универсальная палитра, с которой дизеринга будет ещё больше.

Там было много команд, которые я не использовал. Какая именно отвечает за оптимальный набор цветов?

Если не критичен именно GIF, лучше и не возись с этой фекалией мамонта, а используй WebP: он почти всеми современными браузерами и просмотрщиками картинок поддерживается. Ну или хотя бы APNG – он весит больше, чем WebP, но чуть универсальнее.

А что все-таки лучше- WebP или APNG? За кем будущее? Или гифки их всех переживут?

shkolnik_2019
() автор топика
Ответ на: комментарий от shkolnik_2019

Потому, что GIF (в оригинале) совсем не видеоформат. Анимация там сбоку припёка. Формат для картинок, сжатие без потерь, каждый кадр, ЕМНИП, жмётся отдельно. Почти любой современный видеокодек (кроме редких специфичных, вроде MJPEG) использует ключевые кадры и междукадровое сжатие.

GIF - это то, вместо чего пришёл PNG (и пришёл исключительно из-за жадности копирастов).

hobbit ★★★★★
()
Ответ на: комментарий от crutch_master

Да каких нулевых, в нулевых уже был флеш. Это из 90-х привет.

anonymous
()
Ответ на: комментарий от shkolnik_2019

Какая именно отвечает за оптимальный набор цветов?

Я ж говорю, из первого поста. Там двухпроходное кодирование: первая команда генерирует оптимальную палитру во временный файл, вторая конвертирует видео в гифку с учётом этой палитры.

За кем будущее?

Я не Ванга. Но думаю, что WebP, поскольку WWW катится к монополизации гуглом, а формат этот гугловский. А ещё сейчас на взлёте векторные анимации: как SVG, так и эмуляция на JS типа Lottie.

anonymous
()
Ответ на: комментарий от hobbit

сжатие без потерь

Потеря цветов и полупрозрачности не считается, что ли? :) Дизеринг и горбатые края куда более заметны, чем артефакты непережатого JPEG.

anonymous
()

Наверное если бы гиф не был говном для видео, видео кодеки вместо него не придумывали бы, не?

Вырезать кусок из видео можно без перекодирования.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.