English 中文(简体)
ffmpeg 文本中的单引号
原标题:ffmpeg single quote in drawtext

我还没有能够获得 ffmpeg s 绘图文本视频过滤器, 以在绘图文本 s “ text=” 参数中绘制批号/ 单引号, 即使我逃脱了参数 。 双引号效果良好, 而从文件( 例如文本文件= “ example. txt ” ) 装入的文本中的批号效果良好 。 这是窃听器吗?

例如:

ffmpeg -i test.mpg -vf drawtext="apostrophes don t print" ...
ffmpeg -i test.mpg -vf drawtext="even when they re escaped" ...
最佳回答

特殊性格逃脱就像暴力: 如果他们不能解决你的问题,你就会用得不够。

ffmpeg -i test.mpg -vf drawtext=text="It\\ s so easy"

生成了包含一个代号的文本重叠。 文本正在被解析好几次, 所以您不仅需要逃避引号, 您也需要逃避引号中的斜线。 两次 。

您选择使用文本文件 might 是在这种情况下更好的方法 。

问题回答

我得以在参数字符串中插入 Unicode u2019 ,它为单一右引号工作。

# 这对我有用 # # This works for me #

public function replaceSpecialFfmpegChars($text)
    {
        return str_replace(
            ":",
            "\\\\\:",
            str_replace(
                "%",
                "\\\\\\%",
                str_replace(
                    " ",
                    " \\\\\\  ",
                    str_replace(
                        """,
                        "\\\\\"",
                        str_replace(
                            "\",
                            "\\\\\\\\",
                            $text
                        )
                    )
                )
            )
        );
    }

如果有人需要这个来帮助Python, 这个逃生功能对我有效(基于 FFmpeg 引言和逃生文档 +多功能缩略语建议):

return " " + text.replace(":", "\\:").replace(" ", " \\\\\\  ") + " "

只需将您的文本放入文件, 例如我的Text. txt, 并使用 textfile 选项 :

->myText.txt This is my text with special characters :,(,),

而不是使用:

ffmpeg - i test. mpg - vf drawtext=" 这是我的文字, 带有特殊字符 :, (,), "

使用以下命令:

ffmpeg - i test.mpg - vf 文本文件=textFile.txt

这可能是与魔法引号有关的事情。 通过我刚刚在 Windows 上使用 Windows 命令行和 MinGW 进行的一连串测试, 我每次都遇到同样的问题。 因为 ffmpeg 绘图文本使用 Freetype (我想这是启用魔法引号的地方 ) 我怀疑在禁用魔法引号方面还需要做很多工作。 我不确定是否有办法去掉命令行中添加的斜线, 因为所看到的一切都涉及到 PHP 脚本。 我可能错了, 因为我不是 PHP Guru, 但我不知道如何把它们融入 ffmpeg 命令 。

如果您通过 Python 重新通过字符串, 下列人员为我工作 :

txt =  it s good! 
txt = txt.replace(   ,   \\\\\   )

在 node.js 中, 我可以用此行在文本中加一个冒号 。

let surahTxt = "QURAN " + chapterNo + "\:"+ from + "-" + to ;

之后此变量与绘图文本一起使用

窗口用户 < 强 > :

逻辑:为了更方便的理解,我将把单引号称为作为结果显示: " 单引号 " 和所有其他单引号仅是单引号.。

你必须将文字的第一部分放在句号前, 在单引号 + 3 之间, 然后将句号本身 + 在单引号之间, 之后的文字 ”

所以要制作: "剂量不打印"就是:

< parge_ code> drawtext= text= 后缀 does\ t print 。

举例来说:

ffplay -f lavfi  "color=blue:size=700x200,drawtext=text= apostrophes don \  t print :fontsize=40:fontcolor=white:x=(W-tw)/2:y=(H-th)/2"

另一种解决办法似乎是,使用其他人在此已经提到的文本文件:

绘图文本=文本文件=某种文件。txt

"https://stackoverflow.com/posts/74390947/revisions">ricardo-bohner s 方法非常有效, 但只要确保, 你得到的准确如下:

<强 > 我使用过这个;

line = it s
str(line.replace(" ", " \\\  "))

< 坚固> 但由于我在所执行命令中编码某些函数 < / 坚固 > 的方式, 我得到了以下的“ 坚固% code> \ < /code {/ 坚固” :

it \  s




相关问题
How do I escape a string for a shell command in node?

In nodejs, the only way to execute external commands is via sys.exec(cmd). I d like to call an external command and give it data via stdin. In nodejs there does yet not appear to be a way to open a ...

Do I need to escape this?

It might be a bit unusual, but I need to echo <?php. However, I think that PHP treats it as an actual <?php and starts executing code instead of treating it as a string. How can I escape <?...

热门标签