2

Я пытаюсь получить блеклый текст. Я надеялся, что смогу сделать это через цвет шрифта и выражение - как это

fontcolor='if(gt(n,44), white@.2, white)'

очевидно, что это не "исчезает", а просто проверяет, может ли оно вычислить выражение, и кажется, что цвет шрифта не обрабатывает выражения. Это фактическое утверждение - этот цвет шрифта не может обрабатывать выражения?

Кто-нибудь знает способ исчезновения в тексте минус просто цепочка за кадр? Есть ли способ замаскировать текст или что-то в этом роде?

2 ответа2

1

К сожалению, вы не можете использовать выражения для параметра цвета текста фильтра drawtext . Это делает невозможным исчезновение текста или создание чего-либо необычного.

Хитрость заключается в том, чтобы использовать фильтр blend как предложил LordNeckbeard, и наложить исходный видеопоток на поток, содержащий субтитры. Что-то вроде этого, чтобы исчезнуть в подзаголовке:

ffmpeg -y -i input.mp4 -filter_complex "[0:v] drawtext=fontfile=Fonts.ttf:text='test':x=100:y=50:fontcolor=white:fontsize=30 [subtitles]; [subtitles][0:v] blend=all_expr='A*(if(between(T,$start,$end),(T-$start)/($end-$start),1))+B*(1-(if(between(T,$start,$end),(T-$start)/($end-$start),1)))' [out]" -map '[out]' -map 0:a output.mp4

Здесь $start и $end - начальная и конечная позиции постепенного появления в секундах соответственно. Аудиопоток будет взят с входа. Вы можете скопировать его с -c:a copy .

0

У ffmpeg теперь есть параметр fontcolor_expr (который рассматривается в документации ffmpeg), в котором вы можете использовать выражения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .