我有以下命令:
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]提供了文本和文本文件。请只提供一个
我完全不知道它如何传递文本,因为我在命令中没有定义。对于为什么会引发此错误的任何帮助,我们将不胜感激。
-max_muxing_queue_size 1024
也是因为我没有此错误:
为输出流0:1缓冲的数据包太多。
答案 0 :(得分:2)
您需要转义字体文件路径,因为“ C:\”中的:
是drawtext过滤器的参数分隔符。由于没有其他“ arg = value”对,因此它尝试使用某些命令行作为文本。
根据您的外壳以及要进行多少级解析,您可能需要修改转义。
这对我有用:
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