如何使用FFmpeg创建带下划线的文本水印?
确实,ffmpeg的drawtext滤镜本身没有内置的下划线功能,不过我们有两种实用的方法来给你的水印文字添加下划线:
方法1:用两个drawtext滤镜模拟下划线
我们可以在水印文字下方绘制一条细线来模拟下划线,通过串联两个drawtext滤镜实现:
ffmpeg -i ./public/uploads/videos/1577703125107.mp4 -vf "[in]drawtext=fontfile=./public/fonts/Arial/arial.ttf:text='my watermark text':fontcolor=#000000:fontsize=20:x=23:y=68, drawtext=fontfile=./public/fonts/Arial/arial.ttf:text='%{repeat(textwidth(\'my watermark text\'), \'─\')}':fontcolor=#000000:fontsize=1:x=23:y=68+20+2[out]" ./public/uploads/videos/1577703128790.mp4
参数说明:
textwidth('my watermark text'):动态计算你的水印文字宽度,确保下划线长度和文字完全匹配repeat(width, '─'):根据计算出的宽度生成对应长度的长横线(你也可以用下划线字符_替换─,调整字体大小来改变粗细)y=68+20+2:下划线的垂直位置,是原文字的y坐标 + 字体大小 + 2像素的间距(可以根据需要微调)fontsize=1:控制下划线的粗细,数值越大线越粗
方法2:使用ASS字幕实现原生下划线
如果需要更标准、美观的文本下划线,推荐用ASS字幕来实现,因为ASS原生支持文本样式包括下划线:
步骤1:创建ASS字幕文件
新建一个名为watermark.ass的文件,内容如下:
[Script Info] ScriptType: v4.00+ PlayResX: 1920 # 替换成你的视频分辨率宽度 PlayResY: 1080 # 替换成你的视频分辨率高度 [V4+ Styles] Style: Default,Arial,20,&H000000FF,&H00FFFFFF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,0,2,10,10,10,0 [Events] Dialogue: 0,0:00:00.00,0:00:05.00,Default,,23,68,,,\u1my watermark text\u0
关键说明:
\u1开启下划线,\u0关闭下划线23,68是水印的x、y坐标,和你原来的drawtext参数一致- 字体、大小、颜色可以在
Style部分调整(比如Arial,20是字体和大小,&H000000FF是文字颜色)
步骤2:用ffmpeg加载字幕
运行以下命令将字幕作为水印添加到视频中:
ffmpeg -i ./public/uploads/videos/1577703125107.mp4 -vf "subtitles=watermark.ass" ./public/uploads/videos/1577703128790.mp4
这种方法的优势是支持更多文本样式组合(比如同时加粗+下划线),下划线是真正的文本样式,视觉效果更自然。
内容的提问来源于stack exchange,提问作者Apoorv Srivastava
相关产品推荐
相关产品推荐

