以拍摄时间来批量重命名视频

在使用手机或相机拍摄照片的同时,我们也会录制一些视频来记录美好的瞬间。但由于大多数设备在拍摄视频时,会以一个序号来命名视频文件。时间一久,可能会忘记视频的具体拍摄日期。美好的回忆却忘记了日期该是多么尴尬的事情。如果用视频的拍摄日期来命名视频,是不是第一眼就能知道美好回忆发生的时间了呢?那么,有没有什么方法可以实现按照拍摄日期来批量重命名视频文件呢?本文,笔者就介绍使用ExifTool工具来给视频文件批量重命名的方法。

注意:本文中提到的代码均会覆盖原文件,请做好备份。本站不对读者的任何损失负责。

1. ExifTool查看视频文件信息的方法

使用如下代码查看视频文件所有的元数据。其中-a表示允许提取重复的标签;-s表示简明输出格式;-g1表示按照标签组组织输出;-u表示提取未知标签。

exiftool -a -s -u -g1 c:\aaa.mp4

如果仅想查看所有的时间类标签,可以采用下面的代码。

exiftool -time:all c:\aaa.mp4

2. 从手机或相机中直接拷贝出的视频

由于从手机中直接拷贝出的视频未经过任何软件的编辑,其源数据中CreateDate标签所记录的时间即为视频的录制时间,可用该时间来重命名视频文件。需要注意的是,CreateDate标签中记录的时间是UTC时间,在重命名视频时需要转换为北京时间。具体使用下面的代码实现。

exiftool -overwrite_original -r -api "QuickTimeUTC" '-FileName<CreateDate' -d "VID_%Y%m%d_%H%M%S%%-c.%%e" *.mp4

在上述代码中,各参数含义如下。-overwrite_original表示覆盖原文件。-r表示遍历子目录,如果没有子目录可以不使用该参数。-api表示设置ExifTool的API选项。QuickTimeUTC表示采用UTC记录时间,如果存在这个选项,CreateDate标签中的时间会自动转换成系统所在时区的时间。QuickTimeUTC仅对QuickTime分类下的标签有用。-FileName<CreateDate表示用CreateDate标签中的时间来重命名文件。-d VID_%Y%m%d_%H%M%S%%-c.%%e表示文件名格式。其中,-d表示设置格式或者日期/时间的值。VID_为自定义的前缀,可以随意设定;%Y%m%d_%H%M%S即为视频拍摄日期和时间;%%-c表示如果存在重名文件,则自动添加数字后缀;%%e表示采用源文件的扩展名。

3. 对于从MacOS的照片APP中导出的*.m4v视频

如果在iPhone手机中将照片和视频的格式设置为了高效,那很可能无法直接从手机内存卡中拷贝出视频文件,需要借助MacOS的照片APP进行转换。转换后的视频,其CreateDate标签中的时间变成了导出的时间,而不再是视频的拍摄时间。虽然MediaInfo可以看到一个名为Recorded Date的标签,但是其并不能被ExifTool读出来。经过观察,照片APP导出的视频中,只有ContentCreateDate标签中存储的才是真实的拍摄时间,并且该时间为北京时间,可以避免转换时区的麻烦。具体采用下面的代码来重命名文件。

exiftool -overwrite_original '-FileName<ContentCreateDate' -d "VID_%Y%m%d_%H%M%S%%-c.%%e" *.m4v

4. 修改CreateDate标签

系统在读取视频文件的信息时,创建媒体日期(属性->详细信息->来源)是读取的CreateDate标签。如果该标签的时间不正确,那么会影响系统显示的日期。为了让系统能显示正确的创建媒体日期,可以修改CreateDate标签。具体修改方法如下。

exiftool -overwrite_original "-CreateDate<ContentCreateDate" *.m4v

此时已将CreateDate中错误的时间修改为了ContentCreateDate标签中的正确时间。但是,CreateDate标签理论上存储的应是UTC时间,而ContentCreateDate中的时间为北京时间。由于系统在读取这个时间后会自动添加系统所在时区的时差,所以需要将目前CreateDate中的北京时间转为UTC时间,否则系统显示的时间仍将错误。具体代码如下。

exiftool -overwrite_original -CreateDate-=8 *.m4v

同时,经过查看视频文件的所有标签,发现在XMP分类中增加了一个名为CreateDate的标签,这会造成信息读取的混乱,需要删除该标签。具体方法如下。

exiftool -overwrite_original -xmp:CreateDate="" *.m4v

再次查看视频的所有标签,发现XMP分类中的CreateDate标签已经被删除了。

10 comments

  1. 测试结果如下,请指点,谢谢!

    C:\Users\PENG\OneDrive\桌面\M5 Note\DCIM\Video>exiftool -time:all V70106-203529.mp4
    File Modification Date/Time : 2017:01:06 20:36:03+08:00
    File Access Date/Time : 2020:08:04 15:40:58+08:00
    File Creation Date/Time : 2019:11:25 10:56:04+08:00
    Create Date : 2017:01:06 12:36:03
    Modify Date : 2017:01:06 12:36:03
    Track Create Date : 2017:01:06 12:36:03
    Track Modify Date : 2017:01:06 12:36:03
    Media Create Date : 2017:01:06 12:36:03
    Media Modify Date : 2017:01:06 12:36:03

    C:\Users\PENG\OneDrive\桌面\M5 Note\DCIM\Video>exiftool -overwrite_original -r -api “QuickTimeUTC” ‘-FileName<CreateDate' -d "VID_%Y%m%d_%H%M%S%%-c.%%e" *.mp4
    系统找不到指定的文件。

    1. 感觉你用的引号不对,不是英文的引号,是中文引号。请修改后重试。

      1. 是英文的。我是直接复制你的代码黏贴进去的,刚开始我也认为是引号的问题,改了,结果还是一样。不知到底是哪里操作不对了?!

        1. 使用命令行工具,不要使用PowerShell。另外,路径中最好不好包含中文或者特殊字符。

          1. Windows 10系统,工具cmd,也尝试了只有英文字符的路径,还是无果。

          2. 这个工具可能会区分大小写,*.mp4的字母是大写还是小写要弄准确。

  2. 你的方法,我们小白不会啊,有没有直接一个软件读取必要设定的数据,批量改名这种视频,找到的改名软件又不是你这种的,怎么办啊

Comments are closed.