допустим, у меня есть следующая команда ffmpeg:

ffmpeg -i input.mp4 -vf  "drawtext=text='hello world':x=100:y=100" output.mp4

Но мне нужно, чтобы текстовая позиция следовала за массивом / списком данных о положении (x, y) следующим образом:

100, 100
101, 103
102, 106
103, 109
and so on...

Как сделать так, чтобы ffmpeg ссылался на список координат x, y в каждом кадре?

1 ответ1

1

Это не возможно напрямую.

Но вы можете создать текстовый файл, содержащий несколько фильтров Drawtext, а затем передать его в виде сценария фильтра.

например

drawtext=text='hello world':x=100:y=100:enable='eq(n\,0)',
drawtext=text='hello world':x=101:y=103:enable='eq(n\,1)',
drawtext=text='hello world':x=102:y=106:enable='eq(n\,2)',
drawtext=text='hello world':x=103:y=109:enable='eq(n\,3)'

А потом беги

ffmpeg - in.mp4 -filter_script:v file.txt out.mp4 

Хотя я вижу из вашей последовательности чисел, что это выглядит как линейная интерполяция значений. Если вы делаете плавную анимацию текстовой позиции, вы можете предоставить выражение для x и y и пропустить / сжать текстовый файл.

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