2

Если я пытаюсь добавить текст и водяной знак одновременно, отображается только водяной знак.

ffmpeg -i i.mp4 -vcodec libx264 -f mp4 
  -vf drawtext="fontfile=/[...]/share/fonts/freefont-ttf/FreeSans.ttf
    :text='TESTING':fontcolor=black@1.0:fontsize=36:x=00: y=40" 
  -vf 'watermarkfile.png [watermark]; [in][watermark] overlay=0:0 [out]' o.mp4

(Все в одну строчку. Здесь я добавил разрывы строк для ясности.)

Если я удаляю часть водяного знака, вместо этого появляется текст, как показано ниже:

ffmpeg -i i.mp4 -vcodec libx264 -f mp4 
  -vf drawtext="fontfile=/[...]/share/fonts/freefont-ttf/FreeSans.ttf
    :text='TESTING':fontcolor=black@1.0:fontsize=36:x=00: y=40" 
  o.mp4

Но как я могу получить и текст, и водяной знак одновременно?

1 ответ1

9

Вы должны выполнить фильтрацию в одном фильтре графа:

ffmpeg -i i.mp4 -i watermarkfile.png -filter_complex \
"[0:v]drawtext=fontfile=/path/to/fonts/FreeSans.ttf:text='TESTING':fontcolor=black@1.0:fontsize=36:x=00:y=40[text]; \
[text][1:v]overlay[filtered]" -map "[filtered]" \
-map 0:a -codec:v libx264 -codec:a copy output.mp4
  • Используйте -filter_complex вместо -vf с несколькими входами и / или выходами.
  • Вам не нужно использовать фильтр источника мультимедиа movie .
  • Аудио может быть скопировано в потоковом режиме, а не перекодировано.
  • См. Руководство по кодированию FFmpeg и x264 для предложений по кодированию.
  • См. Документацию по drawtext и overlay видеофильтрам для получения дополнительной информации.

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