ezw*_*ter 2 java string ffmpeg escaping drawtext
有没有人有一个很好的方法可以从Java的字符串中转义所有特殊字符(',%,\,:: {,}),这些特殊字符将用于ffmpeg drawtext过滤器链中?尝试使用带有不同转义组合的replaceAll实在令人沮丧!
String myTextString = "Bob's special\cool mix:stuff @ 40% off";
Runtime.getRuntime().exec(new String[] { "ffmpeg",...., "filter_complex", "drawtext=enable='between(t,0,10)':x=10:y=10:fontfile=Roboto-Black.ttf:text='" + myTextString + "':fontcolor=#a43ddb:fontsize=14", ... });
ffmpeg抽奖文字过滤器:https://ffmpeg.org/ffmpeg-filters.html#drawtext-1
好吧...在将我的头撞到墙上以获得正确的逃生模式以满足java和ffmpeg的要求之后,我想到了这个:
MyDrawTextString.replaceAll("\\\\", "\\\\\\\\\\\\\\\\").replaceAll("'", "'\\\\\\\\\\\\\''").replaceAll("%", "\\\\\\\\\\\\%").replaceAll(":", "\\\\\\\\\\\\:");
看起来很疯狂,但是有效!注意:我必须在此处将答案中的反斜杠加倍,以使其也正确显示:-P晃动这些反斜杠。
关键是ffmpeg drawtext需要3个反斜杠来转义(',%,:),并且单引号也需要包装在第二对单引号中。Java字符串需要2个反斜杠才能构成一个,而Java replace所有正则表达式需要具有2个反斜杠才能构成一个字符串。因此,您需要使用(2 + 2)* 3个反斜杠来转义drawtext过滤器字符串中的内容!
| 归档时间: | 
 | 
| 查看次数: | 1775 次 | 
| 最近记录: |