ffmpeg drawtext 和 watermark 只创建水印但不创建文本

tom*_*msv 2 ffmpeg watermark

如果我尝试同时添加文本和水印,则仅显示水印。

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
Run Code Online (Sandbox Code Playgroud)

(全部在一行中。为了清楚起见,我在这里添加了换行符。)

如果我删除水印部分,则会出现文本,如下所示:

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
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能同时获得文本和水印呢?

llo*_*gan 9

您应该在一个filtergraph 中执行过滤:

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
Run Code Online (Sandbox Code Playgroud)
  • 使用-filter_complex代替-vf多个输入和/或输出。
  • 您不需要使用movie多媒体源过滤器。
  • 音频可以被流复制而不是被重新编码。
  • 有关编码建议,请参阅FFmpeg 和 x264 编码指南
  • 有关详细信息,请参阅有关drawtextoverlay视频过滤器的文档。