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.