Как сделать GIF, который идет по петле вперед и назад?
У меня есть клип в формате mp4, который я хотел бы превратить в гладко выглядящий GIF-файл, который будет воспроизводиться назад с той же скоростью и качеством, что и при воспроизведении вперед. То есть, когда он достигнет конца клипа, он будет воспроизводиться в обратном направлении, а затем, когда он достигнет конца обращенной версии, он начнет воспроизводить нормальную и продолжит цикл, чтобы он выглядел гладкий, без прыжков.
Я использую Ubuntu GNOME 16.10 с GNOME 3.22, есть ли видеоредакторы или другие приложения, которые я мог бы использовать для этого? И если да, то какие и как? Или, может быть, скрипт, чтобы обратить все кадры, чтобы создать новый, а затем объединить их в GIF? До тех пор, пока скорость и качество в порядке и одинаковы, а скачков нет, я не против того, как это делается.
3 ответа
Самый простой способ - сделать это с помощью этого онлайн-инструмента. Просто загрузите GIF и установите флажок "выполнить до конца и вернуться к началу".
Я не видел ни одного инструмента Linux с такой встроенной функцией, но если вы не хотите использовать онлайн-инструменты или файл слишком велик, вы можете разделить GIF, используя gifsicle, скопировать и переименовать фреймы или просто составить список имен файлов в порядке возрастания и убывания и снова соедините их вместе, снова используя gifsicle.
Нечто подобное может сделать свое дело:
gifsicle --unoptimize --explode original.gif &&
find . -iname "*\.gif\.*" | sort > frame_list.txt &&
find . -iname "*\.gif\.*" | sort -r >> frame_list.txt &&
cat frame_list.txt | xargs gifsicle > reversed.gif
(В случае, если вы получили испорченный / мерцающий gif или какую-то ошибку в gifsicle, вам может потребоваться удалить оптимизации с помощью imagemagick перед его разбиением: convert original.gif -coalesce unoptimized.gif
)
Для шага преобразования mp4 в gif есть много разных вариантов онлайн и офлайн, но я нашел, что это дает лучшие результаты: http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html
Разборка и повторная сборка GIF после его создания вообще не должны влиять на качество, шаг преобразования mp4 в gif будет определять качество.
Чтобы создать GIF "вперед + назад", в Ubuntu / Linux давайте используем замечательное программное обеспечение под названием gifsicle.
Команда проста:
gifsicle --unoptimize original.gif original.gif "#-1-0" > reversed.gif
Он просто объединяет один и тот же GIF два раза, один вперед, другой назад. (обратите внимание, что функция unoptimize полезна, когда картинки оптимизированы, и может привести к сбоям при воспроизведении назад)
После того, как вы подготовите свой обычный gif любым методом / инструментом, используйте это:
http://www.imagemagick.org/Usage/anim_mods/
convert YourGifFile.gif -coalesce -duplicate 1,-2-1 -quiet \
-layers OptimizePlus -loop 0 OutputPatrolCycleFile.gif
PS: я ответил, как изящно решить только основную проблему.