ffmpeg игнорирует разрешение входных svg файлов и создает видео 100×100.

Вопрос или проблема

Я использовал эту команду на протяжении нескольких лет, чтобы создавать .ogg файлы (или любой другой формат) из серии .svg файлов на Linux:

ffmpeg -y -r 1.2 -i %06d.svg -qscale:v 10 path.ogg

Это работало безупречно до сих пор, когда оно выдает видео с разрешением 100×100, а не 1920×1080, как у входных файлов.

Если я принудительно задаю разрешение по выходу 1920×1080 с помощью опции -s, то полученное видео является увеличенной версией видео 100×100, которое я получаю без опции -s. Если я конвертирую svg файлы в png с помощью inkscape, все работает нормально, но я хотел бы избежать усложнения моего рабочего процесса.

Здесь вы можете найти некоторые из .svg файлов.

Есть идеи?

Ответ или решение

Вопрос о том, почему FFmpeg игнорирует разрешение входных SVG файлов и производит видео с размером 100×100 пикселей, имеет несколько причин. Рассмотрим основные проблемы, с которыми вы можете столкнуться, и предложим возможные решения.

Проблема с разрешением SVG файлов

SVG (Scalable Vector Graphics) — это векторный формат, который не имеет фиксированного разрешения. Вместо этого он определяет графику в виде математических формул, что делает его отличным для масштабирования. Однако FFmpeg может некорректно интерпретировать эти файлы, выдавая стандартное разрешение 100×100 пикселей. Это происходит из-за того, что FFmpeg не всегда знает, как считывать атрибуты width и height в SVG.

Возможные причины проблемы

  1. Недостаточная информация о размерах: SVG файлы могут не содержать явной информации о размере изображения в метках, таких как width и height, что затрудняет правильное масштабирование.

  2. Изменения в версии FFmpeg: Если ваш FFmpeg был обновлен, возможно, в новой версии были внесены изменения в обработку SVG.

  3. Отсутствие необходимых библиотек: FFmpeg может зависеть от внешних библиотек для обработки SVG. Убедитесь, что они установлены, и обновите их при необходимости.

Возможные решения

  1. Указать размеры явно: Вы можете попробовать добавить атрибуты width и height в ваши SVG файлы, если они отсутствуют. Например:

    <svg width="1920" height="1080" ...>
  2. Использовать флаг -s: Вы уже упомянули использование флага -s для задания разрешения, но при этом возникает проблема с увеличением изображения. Попробуйте использовать параметр -vf scale для более точной настройки:

    ffmpeg -y -r 1.2 -i %06d.svg -vf "scale=1920:1080" -qscale:v 10 path.ogg
  3. Конвертация в PNG: Хотя вы хотите избежать этого шага, конвертация SVG в PNG с использованием Inkscape действительно даёт лучшие результаты. Если проблемы сохраняются, это может стать временным решением.

  4. Проверка документации FFmpeg: Убедитесь, что вы используете последнюю документацию FFmpeg, чтобы быть уверенными в правильности используемых вами параметров и опций.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...