You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows PC上为视频和图片添加时间戳水印的技术问询(含metadata提取特定格式要求)

Windows PC上为视频和图片添加时间戳水印的技术问询(含metadata提取特定格式要求)

作为经常处理媒体批量水印需求的开发者,我来分享几个在Windows上完全满足你要求的方案——不管是图形界面新手还是命令行玩家,都能轻松实现从元数据提取指定格式时间戳、保留原文件名、零失误处理的目标👇


一、图片批量处理方案(两种选择)

1. 图形界面友好型:IrfanView + 批量模式

IrfanView是Windows上老牌轻量图片工具,自带批量处理和EXIF元数据读取功能,操作零门槛:

  • 先下载安装IrfanView(必须勾选安装插件包,否则无法读取EXIF元数据)
  • 打开软件后按B键进入「批量转换/重命名」模式
  • 点击「添加文件/添加文件夹」选中要处理的图片,切换到「高级选项」标签
  • 勾选「添加文本水印」,点击「文本来自EXIF/IPTC」,选择DateTimeOriginal(拍摄时间,也可按需选其他时间字段)
  • 关键设置:在「自定义EXIF格式」输入字符串:dddd, dd MMMM yyyy, hh:mm tttt对应Windows的AM/PM,和你要的a效果完全一致)
  • 输出设置:选择「覆盖现有文件」(强烈建议先备份原图片!)或「保存到同一文件夹,使用原文件名」
  • 最后点击「开始批量处理」即可完成

2. 命令行灵活型:ExifTool + ImageMagick

如果需要更精细的控制,这个专业组合能实现复杂批量逻辑,完全免费:

  1. 下载ExifTool和ImageMagick,解压到同一文件夹(或添加到系统PATH,方便全局调用)
  2. 在图片文件夹新建.bat批处理文件,粘贴以下代码(可按需调整参数):
@echo off
setlocal enabledelayedexpansion
:: 自定义配置参数
set "FONT=C:\Windows\Fonts\arial.ttf"  # 确保字体路径真实存在
set "FONTSIZE=24"
set "TEXTCOLOR=white"
set "POSITION=+10+10"  # 水印位置:+x+y为左上角,+10-10为左下角(y轴负数代表从底部算起)

:: 遍历当前文件夹下的常见图片格式
for %%f in (*.jpg *.jpeg *.png *.bmp) do (
    :: 用ExifTool提取拍摄时间并转换为指定格式
    for /f "delims=" %%d in ('exiftool -s3 -d "EEEE, dd MMMM yyyy, hh:mm a" -DateTimeOriginal "%%f"') do (
        set "timestamp=%%d"
        :: 用ImageMagick添加水印到图片
        magick convert "%%f" -font "%FONT%" -pointsize %FONTSIZE% -fill %TEXTCOLOR% -draw "text %POSITION% '!timestamp!'" "%%f_temp"
        :: 替换原文件(务必先备份!)
        move /y "%%f_temp" "%%f"
    )
)
echo 图片批量水印处理完成!
pause
  • 注意:无DateTimeOriginal元数据的图片会自动跳过;处理前一定要备份原文件,避免失误

二、视频批量处理方案:FFmpeg(行业标准工具)

视频元数据读取和水印添加需要专业工具,FFmpeg是Windows上最可靠的选择,功能强大且免费:

  1. 下载FFmpeg压缩包,解压后将bin文件夹路径添加到系统环境变量PATH(或把ffmpeg.exe放到视频文件夹中)
  2. 在视频文件夹新建.bat批处理文件,粘贴以下代码:
@echo off
setlocal enabledelayedexpansion
:: 自定义配置参数
set "FONT=C:\Windows\Fonts\arial.ttf"
set "FONTSIZE=28"
set "TEXTCOLOR=white"
set "POSITION=10:10"  # 水印位置:x:y,左下角可设为10:ih-30(ih代表视频高度)

:: 遍历常见视频格式
for %%f in (*.mp4 *.mov *.avi *.mkv) do (
    :: 从视频元数据提取创建时间(部分视频需改用format_tags:creation_time,可先查元数据确认)
    for /f "delims=" %%d in ('ffprobe -v error -select_streams v:0 -show_entries stream_tags=creation_time -of default=noprint_wrappers=1:nokey=1 "%%f"') do (
        :: 用FFmpeg添加指定格式时间戳水印,音频直接复制避免重编码
        ffmpeg -i "%%f" -vf "drawtext=fontfile='%FONT%':text='%{localtime:%A, %d %B %Y, %I:%M %p}':x=%POSITION%:fontsize=%FONTSIZE%:fontcolor=%TEXTCOLOR%" -c:a copy -c:v libx264 -crf 18 "%%f_temp.mp4"
        :: 替换原文件(备份优先!)
        move /y "%%f_temp.mp4" "%%f"
    )
)
echo 视频批量水印处理完成!
pause
  • 关键提示:
    • 若视频元数据无stream_tags:creation_time,可运行ffprobe -show_format_tags "你的视频文件名.mp4"查看全局元数据,将代码中对应字段改为format_tags=creation_time
    • -c:a copy直接复制原音频流,大幅节省处理时间;-crf 18是高质量视频编码参数,画质几乎与原文件一致
    • 格式字符串中%A对应星期全名,%B对应月份全名,%I是12小时制小时,%p是AM/PM,完全匹配你要求的格式

必看注意事项

  • 备份优先:无论用哪种方案,处理前一定要将原文件复制到备份文件夹,避免操作失误导致文件丢失
  • 元数据字段验证:部分图片/视频的时间字段可能不是DateTimeOriginalcreation_time,可提前用ExifTool、FFprobe工具查看确认
  • 字体路径检查:确保代码中的字体路径正确,可通过dir C:\Windows\Fonts\*.ttf命令查看Windows字体文件夹内的具体文件名

备注:内容来源于stack exchange,提问作者Mr. Indian UNBOXER

火山引擎 最新活动