【问题标题】:Drawing dynamic text on video stream在视频流上绘制动态文本
【发布时间】:2017-10-16 04:07:39
【问题描述】:

我正在尝试在我的实时视频流中每 5 分钟动态更改一次文本 这是我使用的论点:

-vf "drawtext=fontsize=40:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"

我在 FFMPEG 控制台窗口中尝试了“c”,但无法正确使用,我总是遇到解析错误。 有如何使用此选项的示例吗?

谢谢。

【问题讨论】:

  • 您必须使用textfile='/path/to/file':reload=1 代替text=''
  • @Mulvya 如何从文件中读取?它多久会重新加载一次?

标签: ffmpeg


【解决方案1】:

除了重新加载,您还需要以原子方式写入文件。先将文本更新为临时文件,然后重命名。如果不是,FFMpeg 有时会读取空数据,并在创建文件且尚未写入任何文本时失败。

  • 使用接下来 5 分钟的文本创建 livetext.txt.tmp。
  • 将 livetext.txt.tmp 重命名为 livetext.txt。

每 5 分钟重复一次此过程。

-vf "drawtext=fontsize=40:fontfile=FreeSerif.ttf:textfile=/path/livetext.txt:x=(w-text_w)/2:y=(h-text_h)/2:reload=1"

通过重新加载,Ffmpeg 会每帧读取文本,因此更新几乎是即时的。详情见Drawtext filter

【讨论】:

  • 感谢您的回答!有没有办法用流副本绘制文本?
  • 这是一个很大的问题。如果您使用过滤器,则不能使用流复制。
  • 我尝试使用每 1 秒更新一次的文本创建 livetext.txt.tmp 并将其重命名为 livetext.txt 文件。但是,我还是遇到了在ffmpeg中无法读取livetext.txt文件。
猜你喜欢
  • 2013-07-20
  • 2016-06-17
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 2016-06-29
  • 2013-10-16
  • 2016-02-23
  • 1970-01-01
相关资源
最近更新 更多