#ffmpeg
#ffmpeg
Вопрос:
Я пытаюсь использовать функции -vf drawtext в ffmpeg.
Следующая команда выполняется успешно
ffmpeg -y -i "C:2.avi" -preset ultrafast -crf 18 -vf drawtext=text=stackoverflow:fontfile=C:/WINDOWS/Fonts/georgia.ttf C:o.mkv
Однако, как только мы изменим команду (измените позиции fontfile= с текстом=
ffmpeg -y -i "C:2.avi" -preset ultrafast -crf 18 -vf drawtext=fontfile=C:/WINDOWS/Fonts/georgia.ttf:text=stackoverflow C:o.mkv
Я получаю следующие ошибки
[Parsed_drawtext_0 @ 02d88a80] Не удалось загрузить шрифт «C»: невозможно найти подходящий шрифт
[AVFilterGraph @ 02c86a20] Ошибка инициализации фильтра ‘drawtext’ с аргументами ‘fontfile=C:/WINDOWS/Fonts/georgia.ttf:text=stackoverflow:’Ошибка открытия фильтров!
Я не понимаю, почему изменение одних и тех же параметров может повлиять на общий результат, это вызывает у меня реальные проблемы, потому что каждый раз, когда я добавляю к этому запросу, я должен задаться вопросом, просто ли это позиционирование параметров или я действительно делаю что-то неправильно.
Ответ №1:
Проблема в том, что в пути используется двоеточие ( :
), которое также является разделителем для аргументов. На самом деле я ожидал, что обе командные строки завершатся ошибкой…
В документах указано, что вам нужно избегать двоеточий в целом, а также привести конкретный пример для drawtext
Обратите внимание, что двоеточия необходимо экранировать.
drawtext='fontfile=Linux Libertine O-40:style=Semibold:text=FFmpeg'
Итак, работает следующее (Windows немного разбирается в том, как экранировать содержимое в оболочке, например, без экранирования в одинарных кавычках, так что вам также нужно экранировать
)
drawtext=fontfile=C\:/WINDOWS/Fonts/georgia.ttf:text=stackoverflow
Комментарии:
1. Проверю это в ближайшее время, кажется логически правильным. Спасибо, что указали на это. В целом, хотя вы могли бы предположить, что если это так, это приведет к сбою, какой бы порядок он ни был указан, но это не так…