用于覆盖、滚动文本、视频时间戳的FFmpeg Drawtext过滤器

2020-10-23 12:31:53

了解FFmpeg的DrawText过滤器可以动态地在视频上覆盖文本并显示诸如时间码、帧分辨率、水印等信息。另外,让我们学习如何使用FFmpeg的Drawtext过滤器配置字体、字体大小、位置、背景色、对齐方式、多行等。

为了使用Drawtext,您需要将FFmpeg配置为“--enable-libfreetype”。根据文档,如果需要,您还需要以下选项,

启用默认字体后备和您需要使用--enable-libfontconfig配置FFmpeg的字体选项。

单击此处可以访问Drawtext和Filter的完整选项列表。我在这里解释太多了,但是,如果你有什么问题,那是你应该首先参考的地方。

在本文中,我将介绍几个常见的用例,这些用例应该会使概念更容易理解。

InputClip.mp4是要在其上显示文本的输入视频;输出(包含文本)将存储在output.mp4中。

我以640x360';开头的文本是将在视频上显示的文本(您可以将其作为视频水印的名称,对吗?)。

文本x=640:y=360的位置表示x和y的坐标分别为640px和360px。此外,作为附注,视频的分辨率为1280x720。

一种更好的方法是按照屏幕上打印的文本长度来偏移文本。

如果你看上面的图片,你会看到它从视频的中心开始,向右延伸。

如果要使文本本身居中,则可以在告诉绘图文本在何处呈现文本时减去呈现文本的高度和宽度。

这是怎么做的。使用命令:x=(w-text_w)/2:y=(h-text_h)/2,它将使文本居中。这是我们的新命令-。

太棒了-您现在知道如何使用FFmpeg的高级Drawing Text过滤器将文本覆盖到视频上。您认为您可以添加自己的水印或版权吗?我们试试🙂吧。

让我们按如下方式修改该命令,以指示我的姓名和版权符号。

这会产生这样的输出-看起来不错,对吧?您可以使用x轴和y轴坐标来按您想要的方式对齐文本。

Boxborderw是框的边框宽度,边框颜色取自boxcolor。

这就是它,带背景的文本。在本例中,我将文本颜色切换为黑色,以便与浅色背景边界框形成良好对比(而背景框又与深色背景形成良好对比)。

这是一个非常有用的绘图文本过滤器的应用程序,用于演示低延迟应用程序或视觉质量测试,以便准确地知道每次的时间戳/时间码是什么。

Ffmpeg-i inputClip.mp4-vf";dratext=text=';时间戳:%{pts\:hms}';:x=500:y=500:fontSize=32:[email protected]:box=1:[email protected]";-c:A copy output.mp4。

它使用时间戳和时间脚本选项,使用HMS格式说明符以小时:分钟:秒的格式显示时间。在我的观点中,符号和格式很复杂!因此,在正确设置显示格式之前,可能需要进行大量的反复试验。

以下是视频的外观。希望Vimeo不会有太多延迟就给你看视频🙂。

而这里是同样的命令,只是使用了微秒时间选项来提供微秒的时间精确度!花哨的🙂。

Ffmpeg-i inputClip.mp4-vf";dratext=text=';时间戳:%{pts\:flt}';:x=500:y=500:fontSize=32:[email protected]:box=1:[email protected]";-c:A copy output.mp4。

最后,让我们学习如何使用绘制文本过滤器显示电影的字幕。以下是您需要理解的两个主要概念。

提供大量文本:您不能通过命令行做到这一点,因此,您需要读取包含文本的文本文件。你可以使用文本文件选项来阅读它。

并且,使用简单的文本位置指定滚动的速度。在这里,您可以提供一个方程式,而不是一个常量。您首先通过FFmpeg告知y位置是h-80*t,这样每次时间值增加时,h-80*t*t的值就会减少,文本显示得更高。合乎道理?。

提示:将80%改为100%或120%,看看对滚动速度的影响。

这就是关于使用FFmpeg的FFmpeg绘图文本过滤器在您的视频上生成动态覆盖的本教程的内容。这是一个非常通用和方便的工具,你可以用它来覆盖文本,时间码,字幕,版权声明在你的视频上。