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

关于使用ExifTool解析iPhone 15拍摄视频的QuickTime/TrackCreateDate时区及文件命名的技术咨询

关于使用ExifTool解析iPhone 15拍摄视频的QuickTime/TrackCreateDate时区及文件命名的技术咨询

嘿,我来帮你捋清楚这个问题——核心就是搞懂iPhone拍摄视频的QuickTime时间戳时区逻辑,还有怎么用ExifTool给跨设备的媒体文件做统一命名对吧?

先拆解下你遇到的情况:你在日本用iPhone 15拍的视频,Mac的GetInfo显示当地时间是2024年3月5日18:42,这个应该是准确的拍摄时间(JST,UTC+9)。但用ExifTool加了-api quicktimeutc参数后,拿到的FileModifyDate2024:03:05 18:42:57-05:00,这个-05:00明显是你当前所在的时区(比如美国东部时间),而且这个字段是文件系统的修改时间,不是视频真正的拍摄时间,完全不能用来做命名依据,这点得先明确。

关键知识点:iPhone视频的时间戳存储

iPhone拍摄的QuickTime视频里,真正的拍摄时间存在MediaCreateDateTrackCreateDate这两个元数据字段里,而且默认是拍摄时的当地时区时间(也就是你当时的JST时间)。但ExifTool有个坑:默认情况下,它会把QuickTime的时间字段当作UTC时间来解析,而你加的-api quicktimeutc参数是强制让ExifTool把这些时间当成UTC,这就会导致时区转换混乱,完全不是你要的结果。

正确获取拍摄时间的步骤

  1. 先验证原始拍摄时间
    运行这条命令,直接提取核心的拍摄时间字段,别加-api quicktimeutc

    exiftool -MediaCreateDate -TrackCreateDate '/pathToFile.mov'
    

    正常情况下,输出应该是JST的2024:03:05 18:42:xx,和Mac GetInfo显示的一致。

  2. 用ExifTool批量重命名文件
    既然你有不同设备的媒体(iPhone、360相机、无人机),最好统一命名格式,比如包含UTC时间+设备型号,这样跨时区跨设备的文件排序完全不会乱。给你两个实用命令:

    • 如果想保留拍摄当地时间(比如JST),同时标注设备:

      exiftool '-FileName<${MediaCreateDate}_${Model}.%e' -d '%Y%m%d-%H%M%S-JST' '/pathToYourFiles/*.mov'
      

      解释:${MediaCreateDate}提取拍摄时间,${Model}会自动填充设备型号(比如iPhone 15),-d指定日期格式,最终文件名会是类似20240305-184200-iPhone_15.mov的格式。

    • 如果想统一用UTC时间(更适合跨时区的媒体集合):
      因为JST是UTC+9,所以把拍摄时间减9小时转成UTC,命令如下:

      exiftool '-FileName<${MediaCreateDate#;ShiftTime("-9:00")}_${Model}.%e' -d '%Y%m%d-%H%M%S-UTC' '/pathToYourFiles/*.mov'
      

      这样不管是日本拍的iPhone视频,还是其他时区拍的无人机/360相机素材,都能按UTC时间统一排序,逻辑清晰。

额外提醒

从Photos导出文件时,一定要勾选保留原始元数据,不然Photos可能会修改时间戳或者丢失部分字段,导致ExifTool提取的信息不准。如果可以,直接从iPhone导出原始视频文件会更稳妥。

备注:内容来源于stack exchange,提问作者Dennis

火山引擎 最新活动