Почему размер файла увеличивается при конвертации MP4 в WebM? Узнайте причины и решения!

Проблема преобразования MP4 в WebM: анализ и решения

Преобразование видеофайлов — это частая задача для пользователей, работающих с различными форматами. Однако при попытке преобразовать MP4 в WebM, многие сталкиваются с проблемами, связанными с увеличением размера выходного файла. В данной статье мы рассмотрим конкретный случай использования FFmpeg и кодека SVT-AV1, а также предложим возможные решения.

Исходные данные и параметры кодирования

При использовании следующей команды для преобразования файлов:

./ffmpeg -y -hide_banner -nostats \
-i /usr/local/m2/static/lotteon-low-bitrate.mp4 \
-threads auto -f webm -acodec libopus -b:a 96.059k -vcodec libsvtav1 -preset 11 -pix_fmt yuv420p \
-vf "scale="min(-1, iw)":'min(-1,ih)':force_original_aspect_ratio=decrease,crop=trunc(iw/2)*2:trunc(ih/2)*2" \
"/usr/local/m2/m2temp/xcdrtmp/test.webm"

мы получаем выходной файл WebM размером 16 МБ при исходном MP4 размером всего 4,6 МБ. Основной причиной такого увеличения размера является автоматическое управление битрейтом кодека SVT-AV1, который, как выясняется, устанавливает значительно более высокие значения битрейта.

Проблемы с битрейтом и кодированием

Кодек SVT-AV1 по умолчанию работает в режиме CRF (Constant Rate Factor), что ожидаемо приводит к увеличению размера файла. При попытке установить целевой битрейт с помощью параметра -b:v 994k, возникает ошибка:

Svt[error]: Instance 1: Force key frames is not supported for VBR mode

Это говорит о том, что передача битрейта в режиме VBR (Variable Bit Rate) стала причиной возникновения ошибки, так как кодек не поддерживает принудительные ключевые кадры в данном режиме.

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

  1. Использование параметров SVT-AV1: Применение параметра svtav1-params "mbr=994k" позволило определить максимальную скорость. Однако размер выходного файла все равно превышает размер исходного MP4, что свидетельствует о варьировании размеров выходного файла даже при тех же настройках.

  2. Установка CBR и режима низкой задержки: Применение параметров -b:v 994k -svtav1-params "rc=2:pred-struct=1" в CBR (Constant Bit Rate) с низкой задержкой показало наиболее успешный результат, уменьшив размер выходного файла до 4,3 МБ. Это, по сути, единственный метод, который продемонстрировал значительное сокращение.

Вопросы и дальнейшие исследования

При анализе проблемы возникают несколько вопросов:

  1. Причина ошибок при установке битрейта: Почему возникает ошибка принудительного ключевого кадра при установке целевого битрейта, если не используются соответствующие параметры для его установки?

  2. Нестабильный размер выходного файла: Почему размер выходного файла варьируется при одинаковых настройках и исходных данных?

  3. Дополнительные методы для уменьшения размера: Существуют ли другие подходы, которые способны гарантировать меньший размер выхода WebM по сравнению с MP4, помимо использования CBR и низкой задержки?

Заключение

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

Источник

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *