fontconfig on windows - pituz/webm-thread GitHub Wiki

Для рендеринга субтитров ffmpeg использует прыщебиблиотеку fontconfig, которой для нормальной работы требуется файл конфигурации fonts.conf с указанием путей к каталогам с шрифтами. Если его нет, то получается использовать только те шрифты, что вшиты в mkv с субтитрами, а если таких нет — то получается что текст вообще рисовать нечем. При отсутствии файла конфигурации ffmpeg при каждой попытке рендеринга субтитров выводит сообщение:

Fontconfig error: Cannot load default config file
[Parsed_ass_0 @ 000000000033fee0] No usable fontconfig configuration file found, using fallback.

Для исправления этого поступаем следующим образом:

  • Создаем где-нибудь каталог для конфигов fontconfig'а и дополнительных шрифтов. В качестве примера здесь выбран каталог c:\ffmpeg\fonts.
  • Помещаем туда файл fonts.conf следующего содержания, заменив в нём пути на свои:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <dir>c:\windows\fonts</dir>
    <dir>c:\ffmpeg\fonts</dir>
    <cachedir>c:\ffmpeg\fonts\cache</cachedir>
    <include ignore_missing="yes">c:\ffmpeg\fonts\aliases.conf</include>
</fontconfig>
  • Создаём упомянутый в конфиге каталог cache (c:\ffmpeg\fonts\cache). Он нужен для сохранения fontconfig'ом метаданных шрифтов (их обход может занять много времени, особенно в windows). Желательно, чтобы он располагался не в C:\Program Files или C:\Program Files (x86)\, иначе могут возникнуть проблемы с запись кэша в этом каталоге.

  • По желанию для улучшения подбора шрифтов можно ещё взять упомянутый в конфиге aliases.conf, но всё должно работать и без него.

  • Самое главное: прописываем созданный конфиг в переменных среды. Создаем системную или пользовательскую переменную (Компьютер-Свойства-Дополнительные параметры системы-Переменные среды):

      FONTCONFIG_FILE=c:\ffmpeg\fonts\fonts.conf
    

(для альтернативно одарённых: FONTCONFIG_FILE — имя переменной, c:\ffmpeg\fonts\fonts.conf — значение). Настройка переменных для фонтконфига

  • Закрываем терминал и открываем новый. Проверить наличие и значения переменных среды (а также устанавливать их локально для терминала) можно при помощи команды SET.
  • Пользуемся. О наложении субтитров написано здесь.
⚠️ **GitHub.com Fallback** ⚠️