You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FFmpeg等工具从带元数据图片生成带时间戳视频及补加视频日期水印

嘿,这两个问题都能用FFmpeg轻松解决,我给你一步步讲清楚:

问题1:从带拍摄时间元数据的图片生成带时间戳的视频

完全没问题!FFmpeg直接支持读取图片的EXIF元数据,然后把时间戳作为水印叠加到视频里,同时完成图片到视频的合成。

用这条命令就行(记得替换字体路径为你系统里的真实路径):

ffmpeg -framerate 1 -pattern_type glob -i "*.jpg" -vf "drawtext=fontfile=/path/to/your/font.ttf:text='%{exif:DateTimeOriginal}':fontsize=24:fontcolor=white:x=10:y=10:box=1:boxcolor=black@0.5" -c:v libx264 -crf 23 -pix_fmt yuv420p timestamped_video.mp4

关键参数拆解:

  • -framerate 1:因为你的图片是每分钟拍一张,所以帧率设为1fps(如果想要更快的延时效果,比如每秒播放3张,就改成-framerate 3)
  • -pattern_type glob -i "*.jpg":批量匹配当前文件夹下所有JPG图片(如果是PNG或其他格式,改后缀就行)
  • -vf drawtext=...:核心的水印滤镜,%{exif:DateTimeOriginal}会直接读取图片EXIF里的拍摄日期时间;box=1和boxcolor=black@0.5是给文字加半透明黑底,避免在亮背景上看不清文字
  • -c:v libx264 -crf 23 -pix_fmt yuv420p:用H.264编码生成兼容性好的MP4视频,CRF23是平衡画质和文件大小的默认值
问题2:已处理图片(重命名+写入EXIF)的后续步骤

你已经完成了解码、重命名和EXIF写入的工作,接下来直接用上面的命令就可以生成带时间戳的视频!

如果你的文件名本身就包含了规范的时间格式(比如20240520_143000.jpg),也可以直接从文件名提取时间,不用读EXIF,命令可以改成这样(同样替换字体路径):

ffmpeg -framerate 1 -pattern_type glob -i "*.jpg" -vf "drawtext=fontfile=/path/to/your/font.ttf:text='%{substr(filename,0,4)}-%{substr(filename,4,2)}-%{substr(filename,6,2)} %{substr(filename,9,2)}:%{substr(filename,11,2)}:%{substr(filename,13,2)}':fontsize=24:fontcolor=white:x=10:y=10:box=1:boxcolor=black@0.5" -c:v libx264 -crf 23 -pix_fmt yuv420p final_video.mp4

这个命令里的substr会把文件名里的数字提取出来,转换成YYYY-MM-DD HH:MM:SS的友好格式。

另外提醒下字体路径的通用参考:

  • Windows系统可以用C:/Windows/Fonts/arial.ttf
  • Linux系统常用/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
  • Mac系统可以用/Library/Fonts/Arial.ttf
    如果找不到这些字体,换成你系统里已有的字体路径就行。

内容的提问来源于stack exchange,提问作者m4D_guY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:17:45