Вы можете использовать фильтр drawtext.
Динамический текст
Текст может быть изменен во время кодирования, если вы используете textfile
и reload
:
textfile
Текстовый файл, содержащий текст для рисования. Текст должен быть последовательностью символов в кодировке UTF-8.
reload
Если установлено значение 1, текстовый файл будет перезагружаться перед каждым кадром. Обязательно обновите его атомарно, или оно может быть прочитано частично или даже не выполнено.
оживлять
Текст может перемещаться с использованием выражений в параметрах drawtext x
и y
. Смотрите в документации по drawtext список констант и функций.
Редактирование временной шкалы
Некоторые фильтры, такие как drawtext, поддерживают опцию enable
означает, что вы можете выключать и включать фильтр. Вы можете увидеть, какие фильтры поддерживают временную шкалу:
ffmpeg -filters
пример
Если у вас есть входное видео, которое вы хотите наложить на текст:
ffmpeg -i input -vf "drawtext=enable='gte(t,3)':fontfile=Vera.ttf:textfile=text.txt:reload=1:y=h-line_h-10:x=(W/tw)*n" output
- Это включит фильтр отрисовки текста через 3 секунды
- Каждый раз, когда
text.txt
обновляется, текст будет меняться
- Слова будут перемещаться на экране слева направо (я отстой в этих выражениях, но вы поймете)
Если у вас нет входного видео и вы просто хотите сгенерировать текст на черном фоне:
ffmpeg -f lavfi -i "color=color=black, drawtext=enable='gte(t,3)':fontfile=Vera.ttf:fontcolor=white:textfile=text.txt:reload=1:y=h-line_h-10:x=(W/tw)*n" -t 5 output
Здесь -t 5
указывает общую длину вывода. (Если не указано, кодировка будет выполняться вечно.) Цвет шрифта установлен на белый, поэтому текст становится видимым.