【问题标题】:ffmpeg commandline behavior randomnessffmpeg 命令行行为随机性
【发布时间】:2014-07-02 04:34:04
【问题描述】:

我正在尝试在 ffmpeg 中使用 -vf drawtext 函数。

以下命令运行成功

ffmpeg -y -i "C:\2.avi" -preset ultrafast -crf 18 -vf  drawtext=text=stackoverflow:fontfile=C:/WINDOWS/Fonts/georgia.ttf C:\o.mkv

但是,一旦我们更改命令(更改位置 fontfile= 与 text=

ffmpeg -y -i "C:\2.avi" -preset ultrafast -crf 18 -vf  drawtext=fontfile=C:/WINDOWS/Fonts/georgia.ttf:text=stackoverflow C:\o.mkv

我收到以下错误

[Parsed_drawtext_0 @ 02d88a80] 无法加载字体“C”:无法找到匹配的字体

[AVFilterGraph @ 02c86a20] 使用参数“fontf”初始化过滤器“drawtext”时出错 ile=C:/WINDOWS/Fonts/georgia.ttf:text=stackoverflow:' 打开过滤器时出错!

我不明白为什么更改完全相同的参数会影响整体结果,这给我带来了真正的问题,因为每次我添加到这个查询时,我都想知道它只是参数的定位还是我实际上做错了什么。

【问题讨论】:

    标签: ffmpeg


    【解决方案1】:

    问题是路径使用冒号 (:),它也恰好是参数的分隔符。我原以为这两个命令行都失败了,实际上......

    docs 状态通常需要对冒号进行转义,并为drawtext 提供一个特定示例

    注意冒号需要转义。

    drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
    

    因此,以下工作(Windows 对如何在 shell 中转义内容有些特殊,例如没有单引号转义,因此您也需要转义 \

    drawtext=fontfile=C\\:/WINDOWS/Fonts/georgia.ttf:text=stackoverflow
    

    【讨论】:

    • 将很快对此进行测试,似乎在逻辑上是正确的。感谢您指出了这一点。总体而言,尽管您会假设如果是这种情况,无论其指定的顺序如何,它都会失败,但它不会...
    猜你喜欢
    • 2021-02-19
    • 1970-01-01
    • 2021-01-06
    • 2011-12-01
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多