问题描述
我在ffmpeg drawtext过滤器上添加了2个drawtext,我的过滤器descr像这样 “ 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
。