在drawtext中使用ffmpeg单引号

dot*_*sam 9 ffmpeg escaping drawtext

我没有能够得到ffmpeg的drawtext视频过滤器来绘制撇号/单引号,当它们在drawtext的"text ="参数时,即使我逃避它们.双引号工作正常,从文件加载的文本中的撇号(例如textfile ="example.txt")工作正常.这是一个错误吗?

例如

ffmpeg -i test.mpg -vf drawtext="apostrophes don't print" ...
ffmpeg -i test.mpg -vf drawtext="even when they\'re escaped" ...
Run Code Online (Sandbox Code Playgroud)

bla*_*lah 22

特殊的角色逃脱就像暴力:如果他们没有解决你的问题,你的使用就不够了.

ffmpeg -i test.mpg -vf drawtext=text="It\\\\\'s so easy"
Run Code Online (Sandbox Code Playgroud)

生成包含撇号的文本叠加层.文本被解析了几次,所以你不仅要逃避引用,你还必须逃避逃避报价的斜线.两次.

在这种情况下,使用文本文件的替代方法可能是更好的方法.

  • 从Java编写这个命令行时,我实际上必须编写代码:`this.watermarkText = watermarkText.replaceAll(":","").replaceAll("\'","\\\\\\\\\\\\ '');`如果你问我,它完全打击了. (5认同)

Fil*_*sky 6

我能够在参数字符串中插入Unicode \ u2019,并且它适用于单引号。


K.H*_*.H. 5

如果有人需要 Python 的这个功能,这个转义函数对我有用(基于FFmpeg 引用和转义文档+ 上面的多重转义建议):

return "'" + text.replace(":", "\\\\:").replace("'", "'\\\\\\\\\\\\''") + "'"
Run Code Online (Sandbox Code Playgroud)


小智 5

// 这对我有用

public function replaceSpecialFfmpegChars($text)
    {
        return str_replace(
            ":",
            "\\\\\\\\\\\:",
            str_replace(
                "%",
                "\\\\\\\\\\\%",
                str_replace(
                    "'",
                    "'\\\\\\\\\\\\''",
                    str_replace(
                        "\"",
                        "\\\\\\\\\\\"",
                        str_replace(
                            "\\",
                            "\\\\\\\\\\\\\\\\",
                            $text
                        )
                    )
                )
            )
        );
    }
Run Code Online (Sandbox Code Playgroud)