首页 > 解决方案 > ffmpeg 提供文本和文本文件。请只提供一个

问题描述

我有以下命令:

ffmpeg -i vid.mp4 -vf "[in]drawtext=fontfile=C:\Windows\Fonts\arial.ttf:fontsize=40:fontcolor=yellow:x=2048/2:y=720/2:textfile='credits.txt':enable='between(t,6,12)' [out]" -c:v libx264 -t 30 -max_muxing_queue_size 1024 scrolling.mp4

ffmpeg 抛出错误:

[Parsed_drawtext_0 @ 000002354c44eb00] 提供文本和文本文件。请只提供一个

我完全不知道它如何认为我正在传递文本,因为我在命令中定义了 no where 。对于抛出此错误的原因,我们将不胜感激。

也是-max_muxing_queue_size 1024因为没有它我得到这个错误:

为输出流 0:1 缓冲的数据包过多。

标签: ffmpeg

解决方案


您需要转义您的字体文件路径,因为:"C:\" 中的 "C:\" 是 drawtext 过滤器的参数分隔符。由于没有其他“arg=value”对,它试图使用一些命令行作为文本。

根据您的 shell 和解析的级别,您可能需要修改转义。

这对我有用:

ffmpeg \
-i vid.mp4 \
-vf "[in]drawtext=fontfile='C\\:/Windows/Fonts/arial.ttf':
fontsize=40:fontcolor=yellow:
x=2048/2:y=720/2:textfile=credits.txt:
enable='between(t,6,12)'[out]" \
-c:v libx264 \
-t 30 \
-max_muxing_queue_size 1024 \
scrolling.mp4

推荐阅读