В fluent-ffmpeg как включить несколько видеофильтров? - PullRequest
1 голос
/ 31 марта 2020

Код ниже добавляет водяной знак, но игнорирует масштабирование. Как включить несколько видеофильтров в fluent-ffmpeg?

ffmpeg(inputFileName)
  .inputOptions(['-safe 0', '-f concat'])
  .outputOptions([
    '-filter:v scale=w=1280:h=720',
    "-filter:v drawtext=text='watermarkText':x=W-150:y=H-th-10:fontsize=32:fontcolor=white",
    '-crf 10'
  ])
  .save('output.mp4'); 

Я пробовал также эти форматы внутри .outputOptions([]), но безрезультатно: '-filter:v <param1>, <param2>' '-filter:v <param1>; <param2>' '-filter:v', '<param1>', '<param2>'

1 Ответ

1 голос
/ 31 марта 2020

Полагаю, вы можете просто разделить два фильтра запятой:

ffmpeg(inputFileName)
  .inputOptions(['-safe 0', '-f concat'])
  .outputOptions(["-filter:v scale=w=1280:h=720,drawtext=text='watermarkText':x=W-150:y=H-th-10:fontsize=32:fontcolor=white",
    '-crf 10'
  ])
  .save('output.mp4'); 

Я не могу проверить это с помощью fluent-ffmpeg, но это синтаксис командной строки ffmpeg.

Тестирование с использованием командной строки:

  • Генерация синтетического c входного видеофайла:

    ffmpeg -y -f lavfi -i testsrc=duration=10:size=192x108:rate=1 -c:v rawvideo -pix_fmt bgr24 input.avi
    
  • Масштабирование до 1280x720 и нарисуйте текст (используя большой зеленый текст):

    ffmpeg -y -i input.avi -filter:v scale=w=1280:h=720,drawtext=text='watermarkText':x=W/2:y=H-th-10:fontsize=72:fontcolor=green -vcodec libx264 -crf 10 output.mp4
    

Я не уверен в правильности аргумента '-f concat', и вы также пропустили спецификацию видеокода c.

...