如何使用ffmpeg在视频的每一帧上显示帧号?

igo*_*org 5 variables ffmpeg frame

我的测试命令如下:

ffmpeg -i in.mov -vf "drawtext=fontfile=/usr/share/fonts/ttf-bitstream-vera/Vera.ttf: x=(w-tw)/2: y=h-(2*lh)-n: fontcolor=white: fontsize=40: box=1: boxcolor=0x00000000@1: text=" -an -y out.mov
Run Code Online (Sandbox Code Playgroud)

我想在每一帧上显示帧编号。但是,将“text”变量设置为“n”并没有帮助(它显示n)并且%n似乎是新行符号。最令我困惑的是这部分

y=h-(2*lh)-n
Run Code Online (Sandbox Code Playgroud)

效果很好,这意味着它获取当前帧的正确值并相应地向上移动文本。

igo*_*org 4

好吧,这个功能以前没有ffmpeg,但现在有了。这就是你如何做到的:

...drawtext=text=%{n}:expansion=normal:fontfile=/usr/share/fonts/ttf-bitstream-vera/Vera.ttf:other_options...
Run Code Online (Sandbox Code Playgroud)

注意,扩展应该设置为正常,这不是现在的默认值,但将来应该是默认的(根据ffmpeg文档)。