直接使用:
ffmpeg -i 1.mp4 -vf "drawtext=text='Super User % ':x=(w-text_w)/2:y=(h-text_h)/2:fontsize=24:fontcolor=white" -c:a copy output.mp4
会得不到文本,log显示:
[Parsed_drawtext_0 @ 0x7fdc5be06e40] Stray % near ''
Last message repeated 45 times
[Parsed_drawtext_0 @ 0x7fdc5be06e40] Stray % near '':01.66 bitrate= 0.2kbits/s speed=2.06x
Last message repeated 15 times
[Parsed_drawtext_0 @ 0x7fdc5be06e40] Stray % near ''0:01.98 bitrate= 0.2kbits/s speed=1.37x
Last message repeated 14 times
[Parsed_drawtext_0 @ 0x7fdc5be06e40] Stray % near ''0:02.64 bitrate= 792.9kbits/s speed=1.35x
Last message repeated 11 times
[Parsed_drawtext_0 @ 0x7fdc5be06e40] Stray % near ''0:02.98 bitrate=1404.5kbits/s speed=1.21x
Last message repeated 14 times
[Parsed_drawtext_0 @ 0x7fdc5be06e40] Stray % near ''0:03.32 bitrate=1260.4kbits/s speed=1.08x
Last message repeated 12 times
[Parsed_drawtext_0 @ 0x7fdc5be06e40] Stray % near ''0:03.98 bitrate=1577.2kbits/s speed=1.11x
^C Last message repeated 4 times
av_interleaved_write_frame(): Immediate exit requested
Error writing trailer of output.mp4: Immediate exit requested
此时需要参数 expansion
expansion=none
ffmpeg -i 1.mp4 -vf "drawtext=text='Super User % ':x=(w-text_w)/2:y=(h-text_h)/2:fontsize=24:fontcolor=white:expansion=none" -c:a copy output.mp4
参数解释:
设置文本扩展模式。可以为 none , strftime (已弃用了) 或 normal (默认). 见后面 文本扩展中的详细介绍
文本扩展
如果 expansion 设置为 strftime ,则滤镜会接受 strftime() 序列提供的文本并进行相应扩展。
检查 strftime() 的文档。这个特性现在是弃用的。
如果 expansion 设置为 none ,则文本都是直接打印文本(即直接以文本内容不扩展进行输出)
如果 expansion 设置为 normal (它是默认值),将应用下面的扩展规则。
序列形式 ${…} 的内容将被扩展。大括号之间的文本是一个函数的名字,可能紧随其后是一些 用 : 隔开的参数。如果包含特殊字符或分隔符(这里是 : 或者 } ),它们应该被转义。
注意对于在作为滤镜参数的 text 选项值,或者滤镜链图中的参数(多个滤镜连接时)以及是
在 shell 环境中使用,则可能需要4层转义。使用文本文件可以避免这些问题(减少转义的使用)。