使用ffplay时,如何从视频过滤器中的时间戳显示中消除毫秒

When using ffplay, how to eliminate milliseconds from timestamp display in the video-filter

因此,当指定视频过滤器在 'hms' 布局中显示当前视频时间时,过滤器会在秒字段后附加一个毫秒值。 我想去掉毫秒部分。

到目前为止,我调用的 cmd 如下所示:

ffplay myfile.mp4 -vf "drawtext=text='%{pts \: hms}':fontsize=20:fontcolor=white: box=1: boxcolor=black"

即而不是:00:00:01.001 我只想显示 00:00:01。

[有人可能认为前者会有一个'hmsm', 'hms' 会是后者,但它只是行不通。](叹息)

根据the documentation

hms stands for a formatted [-]HH:MM:SS.mmm timestamp with millisecond accuracy.

并且无法自定义此时间戳格式。至少不是 hms 格式。
相同的文档:

If the format is set to localtime or gmtime, a third argument may be supplied: a strftime() format string. By default, YYYY-MM-DD HH:MM:SS format will be used.

所以 text='%{pts\:gmtime}' 没有任何额外的参数输出 1970-01-01 00:00:00 (Unix epoch).

要输出 00:00:00,请将第二个参数设置为 0,将第三个参数设置为 %H:%M:%S

由于 pts 函数最多可以接受 3 个参数,请确保在 Windows 上转义冒号两次,在 Unix 上转义冒号三次,以防止 %M%S 不被解释为可能的第 4 个或第 5 个参数。

Windows:

ffplay -vf "drawtext=text='%{pts\:gmtime\:0\:%H\\:%M\\:%S}':x=1:y=1:fontsize=20:fontcolor=white:box=1:boxcolor=black:boxborderw=2" myfile.mp4

Unix:

ffplay -vf "drawtext=text='%{pts\:gmtime\:0\:%H\\\:%M\\\:%S}':x=1:y=1:fontsize=20:fontcolor=white:box=1:boxcolor=black:boxborderw=2" myfile.mp4

与您的初始命令相比,我还添加了 :x=1:y=1:boxborderw=2。它在文本周围添加了一个小边框并将文本很好地居中放置。
这当然是品味问题。不喜欢可以删除