The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Подготовка качественных GIF-файлов ..."
Отправлено auto_tips, 18-Мрт-15 13:53 
Появившиеся в FFmpeg 2.6 фильтры для работы с палитрами дали возможность существенно увеличить качество преобразования видео в GIF-файлы, за счёт создания для них высококачественных палитр.


Ранее при необходимости повышения качества GIF-файла можно было отключить использование прозрачности, что положительно сказывалось на видео с интенсивным движением или изменением цветов. Но отключение прозрачности в несколько раз повышало размер файла:

   $ ffmpeg -v warning -ss 45 -t 2 -i big_buck_bunny_1080p_h264.mov -vf scale=300:-1 -gifflags -transdiff -y bbb-notrans.gif
   $ ffmpeg -v warning -ss 45 -t 2 -i big_buck_bunny_1080p_h264.mov -vf scale=300:-1 -gifflags +transdiff -y bbb-trans.gif

   $ ls -l bbb-*.gif
   -rw-r--r-- 1 ux ux 1.1M Mar 15 22:50 bbb-notrans.gif
   -rw-r--r-- 1 ux ux 369K Mar 15 22:50 bbb-trans.gif

Наиболее оптимальным методом повышения качества преобразования является подбор оптимальной палитры, которая для GIF-файлов ограничена 256 цветами. Так как создание отдельной палитры для каждого кадра приведёт к расходованию дополнительных 768 байт на кадр, имеет смысл подготовить качественную глобальную палитру.

Перекодирование разделим на две стадии. На первой стадии сохраним статистику о палитрах для каждого кадра при помощи фильтра [[https://ffmpeg.org/ffmpeg-filters.html#palettegen palettegen]]. На второй стадии создадим сводную палитру при помощи фильтра [[https://ffmpeg.org/ffmpeg-filters.html#paletteuse paletteuse]], содержащую цвета, близкие к самым часто используемым цветам в кадрах.

Создадим скрипт gifenc.sh:

   #!/bin/sh

   palette="/tmp/palette.png"
   filters="fps=15,scale=320:-1:flags=lanczos"

   ffmpeg -v warning -i $1 -vf "$filters,palettegen" -y $palette
   ffmpeg -v warning -i $1 -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y $2

Для перекодирования следует выполнить:

   ./gifenc.sh video.mkv anim.gif

Для перекодирования части изображения (например, начиная с позиции 12:23, продолжительностью 35 сек), можно предварительно обрезать ролик командой:

   ffmpeg -ss 12:23 -t 35 -i full.mkv -c:v copy -map 0:v -y video.mkv

или воспользовать фильтром trim, поменяв в скрипте строку:

   filters="trim=start_frame=12:end_frame=431,fps=15,scale=320:-1:flags=lanczos"

Для оптимизации сводной палитры в фильтре palettegen  можно воспользоваться опцией stats_mod. По умолчанию применяется метод  stats_mode=full, при котором приоритет отдаётся качеству цветов неизменных частей изображения, таких как фон. При указании опции
stats_mode=diff можно поменять приоритет в сторону изменяющихся частей, таких как появляющийся поверх фона текст.

В фильтре paletteuse можно использовать опцию dither для выбора метода сглаживания цветов. Предлагается основанный на вероятностном предсказании метод dither=bayer (следует подобрать оптимальный размер шаблона через опцию dither=bayer:bayer_scale=[1,2,3]) и диффузионные методы dither=floyd_steinberg (наиболее популярный), dither=sierra2 (используется по умолчанию) и dither=sierra2_4a (быстрый вариант sierra2, учитывающий блоки по 3 пикселя вместо 7). Отключить сглаживание можно опцией dither=none.

URL: http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html
Обсуждается: https://www.opennet.ru/tips/info/2893.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру