12

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" ...
4

8 に答える 8

31

特殊文字のエスケープは暴力のようなものです。問題を解決できない場合は、十分に使用していません。

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

アポストロフィを含むテキストオーバーレイを生成します。テキストは数回解析されているため、引用符をエスケープするだけでなく、引用符をエスケープするスラッシュもエスケープする必要があります。2回。

この状況では、テキストファイルを使用する代わりの方法がより適切な方法である可能性があります。

于 2012-05-24T00:08:23.290 に答える
8

Unicode \ u2019を引数文字列に挿入することができ、一重引用符で機能しました。

于 2014-11-16T22:51:27.227 に答える
3

誰かがPythonでこれを必要とする場合、このエスケープ関数は私のために機能しています(上記のhttps://ffmpeg.org/ffmpeg-utils.html#Quoting-and-escaping +マルチエスケープアドバイスに基づく):

return "'" + text.replace( ":"、 "\\:")。replace( "'"、 "'\\\\\\''")+ "'"

于 2015-11-10T03:55:39.840 に答える
2

//これは私のために働きます

public function replaceSpecialFfmpegChars($text)
    {
        return str_replace(
            ":",
            "\\\\\\\\\\\:",
            str_replace(
                "%",
                "\\\\\\\\\\\%",
                str_replace(
                    "'",
                    "'\\\\\\\\\\\\''",
                    str_replace(
                        "\"",
                        "\\\\\\\\\\\"",
                        str_replace(
                            "\\",
                            "\\\\\\\\\\\\\\\\",
                            $text
                        )
                    )
                )
            )
        );
    }
于 2020-05-18T05:39:46.433 に答える
0

これはおそらく魔法の引用と関係があります。WindowsコマンドラインとWindowsでMinGWを使用して行った一連のテストを通じて、毎回同じ問題が発生しました。ffmpeg drawtextはFreetypeを使用しているので(これは魔法の引用符が有効になっている場所だと思います)、魔法の引用符を無効にするためにやるべきことがたくさんあるとは思えません。私が見たものはすべてPHPスクリプトに関係しているため、コマンドラインに追加されたスラッシュを削除する方法もわかりません。私はPHPの第一人者ではないので間違っている可能性がありますが、それらをffmpegコマンドに統合する方法を知りません。

于 2012-05-23T20:45:38.143 に答える
0

テキストをmyText.txtなどのファイルに入れて、textfileオプションを使用するだけです。

->myText.txt これは特殊文字を含む私のテキストです:、(、)、 '

次に、使用する代わりに:

ffmpeg -i test.mpg -vf drawtext="This is my text with special characters :,(,),'"

次のコマンドを使用します。

ffmpeg -i test.mpg -vf textfile=textFile.txt

于 2020-09-27T16:11:23.817 に答える
0

を介して文字列を渡す場合はPython、次のように機能します。

txt = 'it\'s good!'
txt = txt.replace('\'', '\'\\\\\\\\\\\'\'')
于 2021-02-17T12:46:39.173 に答える
0

node.jsでは、この行を使用してテキストにコロンを入れることができます。

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

後でこの変数はドローテキストで使用されます

于 2021-11-01T07:54:54.563 に答える