FFmpeg преобразование изображений для JPG, PNG, WebP и GIF

Редакция OdiRouter

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

FFmpeg выполняет подготовку файлов. Оно не создаёт и не редактирует объект изображения. Когда подготовленный файл будет использоваться в рабочем процессе с моделью изображений, проверяйте актуальные страницы OdiRouter Models, Pricing и Documentation, где приведены сведения об интеграции, которые могут меняться.

Выберите формат для задачи

JPEG подходит для непрозрачного фотографического изображения, если допустим файл со сжатием с потерями. PNG — более безопасный выбор, когда важны прозрачность или пиксельные данные без потерь. Используйте WebP только после проверки в целевой среде, которая его получит. GIF остается полезным для коротких анимаций и случаев совместимости, но его ограниченная цветовая палитра легко заметна в градиентах.

Запись JPEG в формате PNG не восстанавливает то, что сжатие JPEG удалило. Новое кодирование также может изменить поддержку альфа-канала, размер файла, обработку цвета или метаданные. Сохраните оригинал до тех пор, пока новый файл не пройдет проверку.

Проверьте локальную сборку FFmpeg.

Начните с:

ffmpeg -version

Установите FFmpeg с помощью менеджера пакетов вашей операционной системы или используйте FFmpeg download page. Названия пакетов и параметры сборки могут различаться. Явная команда WebP ниже также требует сборку FFmpeg с поддержкой libwebp.

Преобразование одного файла

Эта команда создаёт JPEG из входного файла PNG:

ffmpeg -i input.png -q:v 2 output.jpg

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

Чтобы создать PNG из JPEG:

ffmpeg -i input.jpg output.png

Для файла WebP с потерями укажите кодировщик и осознанно задайте качество:

ffmpeg -i input.png -c:v libwebp -q:v 75 output.webp

Если для целевого назначения нужна фиксированная ширина, добавьте фильтр масштабирования и позвольте FFmpeg вычислить высоту:

ffmpeg -i input.png -vf "scale=1200:-1" output.png

Создание GIF из пронумерованных кадров

GIFs выглядят лучше, когда палитра формируется из кодируемых кадров. Сначала создайте её:

ffmpeg -framerate 10 -i frame-%03d.png -vf "fps=10,scale=640:-1:flags=lanczos,palettegen" palette.png

Затем используйте эту палитру для GIF:

ffmpeg -framerate 10 -i frame-%03d.png -i palette.png -lavfi "fps=10,scale=640:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif

Шаблон frame-%03d.png соответствует таким файлам, как frame-001.png и frame-002.png. -framerate задаёт темп последовательности. Фильтр масштабирования фиксирует ширину и вычисляет высоту. После этого проверьте GIF, особенно текст и градиенты, поскольку палитра не может устранить все ограничения по цвету.

Пакетная обработка каталога без потери исходных файлов

Записывайте результаты пакетной обработки в отдельный каталог. -n заставляет FFmpeg остановиться, если выходной файл уже существует.

mkdir -p converted
find . -maxdepth 1 -type f -iname '*.png' -print0 |
  while IFS= read -r -d '' file; do
    name=$(basename "${file%.*}")
    ffmpeg -n -i "$file" -c:v libwebp -q:v 75 "converted/${name}.webp"
  done

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

Проверяйте результат до его передачи дальше по процессу

Откройте файл там, где он будет использоваться. Для проверки с помощью скрипта ffprobe может сообщить кодек и размеры первого видеопотока:

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,width,height -of default=noprint_wrappers=1 output.webp

Когда преобразованное изображение предназначено для API или продукта, до удаления оригиналов проверьте допустимый тип файла, размеры, требование к альфа-каналу и ограничение размера.

Используйте OdiRouter после подготовки файла

OdiRouter не заменяет локально FFmpeg. Он становится актуальным, когда преобразованный файл служит входными данными для последующей оценки или интеграции модели изображений. Используйте OdiRouter Models, чтобы просмотреть текущий каталог, OdiRouter Pricing — для актуальной информации о маршрутизации, а OdiRouter getting-started documentation — когда будете готовы к интеграции. На этих актуальных страницах следует проверять доступность моделей, цены и сведения об API.

Источники

#FFmpeg преобразование изображений#OdiRouter#PNG в WebP с FFmpeg#качество JPEG FFmpeg#пакетное преобразование изображений#палитра FFmpeg GIF