当我从我的Mac上的照片应用程序导出实时照片时,它会创建两个单独的文件:jpg和mov。 jpg带有所有exif数据,而mov文件似乎总是关闭五个小时。
更具体地说,我使用了exiftool -option文件名。这些是jpg的结果(yyyy-mm-dd对所有人都是一样的,所以我只包括时间输出)。
DateTimeOriginal 10:24:38
GPSDateTime 15:24:38Z
MediaCreateDate none
FileModifyDate 15:47:46-05:00
ModifyDate 10:24:38
这些是mov的结果。
DateTimeOriginal none
GPSDateTime none
MediaCreateDate 15:24:38
FileModifyDate 15:47:29-05:00
ModifyDate 15:24:40
它应该显示的时间是jpg的DateTimeOriginal。由于可能存在与时区相关的故障,看起来mov的MediaCreateDate已经关闭了五个小时。
无论如何,我提出问题的原因是我想从使用Apple照片转换到Dropbox中的普通文件夹树。问题是有一个很好的命名方案来保持排序。我google了一下,使用Hazel(加上下面的脚本)工作得很好,如果它不是现场照片的mov文件。用合适的命名方案对我的所有照片(和实时照片)进行排序。
如何调整下面的脚本以获取mov文件的正确名称?
或者
如何使用Hazel告诉每个mov文件具有相同名称的jpg的DateTimeOriginal?
通过这最后一件事,我的意思是有一个脚本,如果输入一个mov文件寻找一个同名的jpg并使用它的DateTimeOriginal。
顺便说一句,这里的第二个答案(Apple Live Photo file format)似乎解释了照片如何跟踪mov文件的元数据,但我不知道如何使用它。
我实际上找到了两个脚本。第一个(https://www.macstories.net/reviews/better-dropbox-camera-uploads-with-camerasync/)。
<?php
date_default_timezone_set("Europe/Rome");
$date = exif_read_data($argv[1],"EXIF");
$date = $date["DateTimeOriginal"];
$time = date_parse_from_format("Y:m:d H:i:s",$date);
$time = mktime($time["hour"],$time["minute"],$time["second"],$time["month"],$time["day"],$time["year"]);
touch($argv[1],$time,$time);
?>
第二个(https://www.noodlesoft.com/forums/viewtopic.php?f=4&t=2218)是
exiftool -P -d '%Y.%m.%d at %H.%M.%S' \
'-filename<${FileModifyDate;}.%e' \
'-filename<${GPSDateTime;}.%e' \
'-filename<${MediaCreateDate;}.%e' \
'-filename<${ModifyDate;}.%e' \
'-filename<${DateTimeOriginal;}.%e' \
"$1"
我之前在apple.stackexchange上问了这个问题,但没有引起注意。 https://apple.stackexchange.com/questions/236377/live-photos-metadata
答案 0 :(得分:1)
还要考虑这个老问题:
将实时照片作为分隔的JPG和MOV文件处理时,元数据将允许您链接文件。 MOV文件有一个名为ContentIdentifier的EXIF标记,看起来与JPG文件的MakerNotes EXIF标记中的标记Apple_0x0011相同。
使用exiftool:
$ exiftool -u -s IMG_8403.JPG | grep Apple_0x0011
Apple_0x0011 : C09DCB26-D321-4254-9F68-2E2E7FA16155
$ exiftool -ContentIdentifier IMG_8403.MOV
Content Identifier : C09DCB26-D321-4254-9F68-2E2E7FA16155
答案 1 :(得分:0)
这是一个策略:从所有.mov文件的修改时间中减去5小时,然后照常进行:
cd folder-with-your-stuff
find * -name "*.mov" |
while read filepath; do
olddate=$(date -R -r "$filepath")
touch -d "$olddate - 5 hours" "$filepath"
done
参考:https://askubuntu.com/questions/62492/how-can-i-change-the-date-modified-created-of-a-file
答案 2 :(得分:0)
在这一点上相当陈旧,但我以为我已经在努力了。
GPSDateTime
始终位于UTC
时区(因此日期附加Z
)。因此,似乎MediaCreateDate
被设置为UTC
时间,区域被剥离。