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.
- Пользуемся. О наложении субтитров написано здесь.