Одним из лучших инструментов, которые я использую, является ffmpeg
. Он может снимать большую часть видео с помощью инструмента скринкаста, такого как kazam
и преобразуйте его в другой формат.
Установите это из программный центр - он устанавливается автоматически, если вы устанавливаете отличную ubuntu-restricted-extras
пакет.
Kazam может выводить видео в различных форматах mp4
или webm
. Как правило, вы получаете лучшие результаты, выводя в mp4
формат.
Пример синтаксиса создания GIF-файлов
Основным синтаксисом для преобразования видео в gif является:
ffmpeg -i [inputvideo_filename] -pix_fmt rgb24 [output.gif]
Преобразованные GIF-файлы, особенно со стандартной частотой 25/29 кадров в секунду, могут быть очень большими. Например, 15-секундное видео webm объемом 800 КБ со скоростью 25 кадров в секунду может выдавать до 435 Мбайт!
Вы можете уменьшить это с помощью нескольких методов:
Частота кадров
Используйте опцию -r [frame-per-second]
. Например
ffmpeg -i Untitled_Screencast.webm -r 1 -pix_fmt rgb24 out.gif
Размер уменьшен с 435 МБ до 19 МБ
Ограничение по размеру файла
Используйте опцию -fs [filesize]
. Например
ffmpeg -i Untitled_Screencast.webm -fs 5000k -pix_fmt rgb24 out.gif
Примечание: Это приблизительный размер выходного файла, поэтому размер может быть немного больше указанного.
Размер выходного видео
Используйте опцию -s [widthxheight]
. Например
ffmpeg -i Untitled_Screencast.webm -s 320x200 -pix_fmt rgb24 out.gif
Это уменьшило размер видео в примере с разрешением 1366x768 до 26 МБ
Цикл навсегда
Иногда вы можете захотеть, чтобы GIF-файл зацикливался вечно.
Используйте опцию -loop_output 0
. Например
ffmpeg -i Untitled_Screencast.webm -loop_output 0 -pix_fmt rgb24 out.gif
Дальнейшая оптимизация и сокращение
Если вы используете imagemagick
convert
при коэффициенте размытости от 3% до 10% вы можете значительно уменьшить размер изображения
convert output.gif -fuzz 3% -layers Optimize finalgif.gif
Окончательно
Объедините некоторые из этих опций, чтобы свести к чему-то управляемому для Ask Ubuntu.
ffmpeg -i Untitled_Screencast.webm -loop_output 0 -r 5 -s 320x200 -pix_fmt rgb24 out.gif
С последующим
convert output.gif -fuzz 8% -layers Optimize finalgif.gif
Пример
