ffmpeg 导出帧,在帧内打印播放时间,这个时间包含具体的播放毫秒值
使用 ffmpeg
导出视频帧并在帧内打印播放时间(包括具体的毫秒值)可以通过以下步骤实现。我们将使用 ffmpeg
的滤镜功能来添加时间戳。
以下是一个示例命令:
ffmpeg -i input.mp4 -vf "drawtext=fontfile=/path/to/font.ttf: text='%{pts\:hms}': x=10: y=10: fontsize=24: fontcolor=white" -vsync vfr frame_%04d.png
解释:
-i input.mp4
:指定输入视频文件。-vf "drawtext=..."
:使用 drawtext
滤镜在帧上绘制文本。
fontfile=/path/to/font.ttf
:指定字体文件的路径。你需要提供一个有效的字体文件路径。text='%{pts\:hms}'
:在文本中插入时间戳。%{pts\:hms}
格式化为 小时:分钟:秒.毫秒
。x=10: y=10
:指定文本在帧中的位置(左上角,距离边缘 10 像素)。fontsize=24
:指定字体大小。fontcolor=white
:指定字体颜色。-vsync vfr
:使用可变帧率同步。frame_%04d.png
:输出帧文件名格式。%04d
表示帧编号,输出文件名将是 frame_0001.png
、frame_0002.png
等。确保你有一个有效的字体文件路径。如果你没有特定的字体文件,可���使用系统默认字体。例如,在 Linux 上,你可以使用 /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf
。
完整示例(假设使用 DejaVuSans 字体):
ffmpeg -i input.mp4 -vf "drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf: text='%{pts\:hms}': x=10: y=10: fontsize=24: fontcolor=white" -vsync vfr frame_%04d.png
运行此命令后,ffmpeg
将从 input.mp4
中提取帧,并在每个帧的左上角打印播放时间(包括毫秒值),然后将帧保存为 frame_0001.png
、frame_0002.png
等文件。