GIF-анимации в постах, загруженные локально, приостановлены

Здравствуйте,

У меня возникла проблема с встраиванием пользовательских GIF-изображений (созданных в ScreenToGif) в сообщения на платформе Discourse. При вставке GIF оно работает некоторое время, а затем застывает на первом кадре, например:

В предварительном просмотре сообщения всё отображается корректно. Также GIF воспроизводится нормально при открытии в новой вкладке браузера. Проблема возникает только внутри самого Discourse.

Я попробовал четыре обходных решения:

  1. Загрузить GIF на другой сайт (например, в S3-бакет), а затем разместить ссылку на него. Это работает до тех пор, пока системный бот не скачает файл локально — после этого GIF снова застывает.

  2. Подумал, что проблема может быть связана с изменением размера, поэтому попробовал убрать разметку Markdown для изображения, например:

    ![](upload://4IHl8zz0sJiYl5Vm3H21YTEFo9z.gif)
    

    вместо:

    ![example|690x383](upload://4IHl8zz0sJiYl5Vm3H21YTEFo9z.gif)
    
  3. Поскольку GIF работал при открытии ссылки в новой вкладке, я попробовал заменить сокращённый URI «upload» на полный URL загруженного изображения, например:

    ![example|690x383](https://d11a6trkgmumsb.cloudfront.net/original/3X/2/1/211635b9ae2b0960e8e135299b3a91189b00c289.gif)
    
  4. Наконец, предположил, что проблема может быть в интерпретации кода Markdown системой Discourse, поэтому попробовал использовать тег HTML для изображения с полным URL:

    <img src="https://d11a6trkgmumsb.cloudfront.net/original/3X/2/1/211635b9ae2b0960e8e135299b3a91189b00c289.gif">
    

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

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

Думаю, дело не в этом. У меня здесь тоже не работает. Я вижу только первый кадр.

Возможно, какое-то другое стандартное настройки Chrome мешает?

О, я могу воспроизвести это в Chrome. Очень странно.

Оригинал

Оптимизировано через Gifscicle
weird_optimized

После обработки через Gifscicle всё работает:

Спасибо за воспроизведение. Какую команду gifcicle вы использовали для оптимизации?

Это просто:

gifscicle original.gif -o fixed.gif

Кстати, Discourse поддерживает автозапуск mp4 и WEBP, что может дать вам лучший результат!

Я не думаю, что дело в размере файла, потому что я пробовал и гораздо более крупные, и гораздо более мелкие GIF-файлы, но это не помогло.

Отлично, давайте посмотрим, сработает ли это для моих реальных GIF. Я обновлю, когда закончу.

Определённо не размер файла, а «повреждённый» файл, который исправляет gifscicle. Часто можно встретить инструменты, создающие некорректные файлы. Я всегда прогоняю свои GIF через надёжный инструмент, например ffmpeg, перед публикацией. Но даже в этом случае легко получить повреждённый файл, если размеры, например, нечётные.

GIF — сложный формат, и в наше время для большинства задач есть более подходящие варианты, такие как MP4 и WEBP.

У меня это сработало для всех моих GIF. В некоторых случаях мне также пришлось добавить флаг --colors 256.

Для тех, кто интересуется: изначально проблемные GIF были созданы с помощью генератора GIF «Нейронная сеть» в программе ScreenToGif.

Спасибо за помощь @Falco

@nbianca есть какие-то идеи, почему миниатюра GIF не анимирована? Кажется, что исходный GIF вполне укладывается в лимиты

В Firefox анимация работает. Либо GIF повреждён, либо это ошибка Chrome.

Для меня в последней версии Firefox / Windows 10 анимация не работает.

Интересно! Вот как это выглядит у меня на Linux: слева Firefox, справа Chrome:

Все GIF-изображения в этой теме для меня анимированы (Chrome на Arch Linux), но текущая версия FastImage сообщает, что они не анимированы из-за этой ошибки.

В таком случае нам стоит поторопиться с его слиянием, а не откладывать :+1:

На всякий случай: я столкнулся с несколькими случаями, когда gifsicle не работает. В частности, иногда для получения рабочего GIF требуется использовать флаг --colors 256. Но в других случаях необходимо оставить этот флаг без указания.

Здравствуйте,

Исправление вашей проблемы принято и теперь доступно в последней версии.