当有多个 drawtext 目标时,如何编写函数 "avfilter_graph_send_command"(ffmpeg) 的 *args?

How to write the *args of function "avfilter_graph_send_command"(ffmpeg) when there has multiple drawtext targets?

我在ffmpeg drawtext过滤器上添加了2个drawtext,我的过滤器描述是这样的 "drawtext=fontfile=simhei.ttf:fontcolor=#ff00ff@%1.0:fontsize=20:box=1.0:boxcolor=#00ff00@%1.0:x=0:y=0:text= '123',drawtext=fontfile=simhei.ttf:fontcolor=#ff00ff@%1.0:fontsize=20:box=1.0:boxcolor=#00ff00@%1.0:x=0:y=200:text='456 '”,所以视频上有两个字符的水印。 而且这个滤镜支持通过命令修改参数:reinit,所以我用函数:avfilter_graph_send_command(m_filter_graph, "drawtext", "reinit", m_filters_args, NULL, 0, 0) 修改实时水印。(m_filters_args 是我的 *arg 变量) 我尝试 snprintf m_filters_args 作为 "fontfile=simhei.ttf:fontcolor=#ff00ff@%1.0:fontsize=20:box=1.0:boxcolor=#00ff00@%1.0:x=0:y=10:text='112233 ',fontfile=simhei.ttf:fontcolor=#ff00ff@%1.0:fontsize=20:box=1.0:boxcolor=#00ff00@%1.0:x=0:y=200:text='445566'", 但它并没有像我想要的那样工作,它只能修改一个drawtext,我希望它们都可以修改,我尝试了其他一些方法,但都失败了。 你能告诉我如何写*arg或者有其他方法可以解决这个问题吗

如有任何帮助,我们将不胜感激!

您可以将 ID 附加到过滤器,例如drawtext@abc=fontfile=...。然后您将命令目标设置为 drawtext@abc.