Fffmpeg DrawText фильтр создает большой размер выходного файла и принимает высокий процессор? - PullRequest
0 голосов
/ 09 июля 2019

У меня есть входной видео файл, на котором я рисую текст пользователя.Я могу нарисовать текст в видеофайле с помощью фильтра drawtext из ffmpeg, и он работает с файлом, но основная проблема возникает с командой ffmpeg.

То есть, когда я запускаю команду ffmpeg, происходит три вещи: - 1.Размер выходного видеофайла больше размера входного файла.2. Выходной видеофайл теряет качество видео, чем входной видеофайл.3. Процессор работает очень быстро.

Используемая команда ffmpeg is-

ffmpeg -i input1.asf -vf drawtext="fontfile=/path/to/font.ttf: \text='Stack Overflow': fontcolor=white: fontsize=24: box=1: boxcolor=black@0.5: \boxborderw=5: x=10: y=10" -codec:a copy IndVsNZ.asf

, чтобы избежать потери качества видео, я использовал этот параметр "-c: v libx264 -crf 20 ".

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

Я пробовал разные решения в интернете, но не нашел в этом проблемы.Если какая-либо ссылка связана с этим, пожалуйста, поделитесь.я новичок в ffmpeg.

Спасибо!

1 Ответ

2 голосов
/ 09 июля 2019

Вы сравниваете разные форматы, разные реализации кодировщика и имеете дело с потерей генерации.

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

Ваш входной видеопоток может быть современным эффективным форматом, таким как H.264.Однако кодировщик по умолчанию для вывода .asf с использованием ffmpeg - это msmpeg4v3, который выводит видеоформат MPEG-4, часть 2, вариант Microsoft версии 3. Это старый, относительно неэффективный кодировщик с дрянными настройками по умолчанию.Поскольку он менее эффективен, он требует больше битов для того же качества.Вот почему добавление -c:v libx264 -crf 20 улучшает качество на бит, потому что это обеспечивает лучший кодер и более современный формат (H.264).

Вы также перекодируете артефакты сжатия, присутствующие во входных данных с потерями, которые могутдальнейшее повреждение сжимаемости.Это называется потеря генерации .

Если вы хотите видео H.264, то вы можете отрегулировать значение CRF.Дайте ему самое высокое значение, которое обеспечивает приемлемое качество.Попробуйте диапазон от 18 до 26 или около того.Используйте самый медленный -preset, для которого у вас есть терпение.См. FFmpeg Wiki: H.264 для получения дополнительной информации.

Процессор идет очень высоко.

Этого и следовало ожидать.Кодирование видео является вычислительно дорогим.Вы можете уменьшить количество потоков кодирования с помощью опции -threads и / или использовать отдельный инструмент для регулирования загрузки ЦП, например, nice в Linux.Но это сделает кодирование более длительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...