Ответ Znuff великолепен (принят и одобрен) и проложил путь к моему собственному решению. Поскольку это специфично для Unix, и мне пришлось работать над Win, вот мое решение для Windows 7 и выше:
Я использовал два пакетных файла (Master.cmd и Slave.cmd), чтобы просмотреть все изображения и записать в них имена файлов.
Master.cmd:
forfiles /p "MyImagesSubPath" /m "2014-02-15*.png" /c "cmd /c ..\Slave.cmd @file @fname
Slave.cmd:
ffmpeg -i "%~1" -vf "crop=1072:1192:24:101, drawtext=text=%~2: fontcolor=white: fontsize=60: box=1: boxcolor=black@0.6: x=50:y=50: fontfile=c\\:\\\\Windows\\\\Fonts\\\\myfont.ttf" "mod_%~1"
Объяснение:
Необходимо использовать два пакета по нескольким причинам:
1. Параметр / c forfiles принимает только командную строку ограниченной длины (253 символа).
2. Для вложения команды FFmpeg в параметр forfiles / c потребуется безумный уровень символов. excaping.
Фильтр имени файла «2014 -.... png» в Master.cmd используется для предотвращения повторной обработки цикла собственным выводом (с именем «mod _.... png») в бесконечном цикле. Вы должны адаптировать эту строку фильтра в соответствии с исходными изображениями.
Подчиненный пакет выполняется из подкаталога «MyImagesSubPath», расположенного под каталогом пакетов (именно здесь вы должны разместить исходные изображения). Slave.cmd получает имя файла с расширением (.png) и без него в качестве двух параметров.
Параметр имени файла без расширения используется как текст, который будет записан в изображение. Полученные изображения сохраняются с префиксом «mod_» в том же пути, что и исходные изображения. Имена файлов могут содержать пробелы.