Метаданные Apple Live Photos
Когда я экспортирую живое фото из приложения для фотографий на моем Mac, оно создает два отдельных файла: jpg и mov. Jpg поставляется со всеми exif-данными, в то время как файл mov всегда отключен на пять часов.
Более конкретно, я использовал exiftool -option filename. Это были результаты для jpg (гггг-мм-дд был одинаковым для всех, поэтому я просто включил вывод времени).
DateTimeOriginal 10:24:38
GPSDateTime 15:24:38Z
MediaCreateDate none
FileModifyDate 15:47:46-05:00
ModifyDate 10:24:38
Это были результаты для мов.
DateTimeOriginal none
GPSDateTime none
MediaCreateDate 15:24:38
FileModifyDate 15:47:29-05:00
ModifyDate 15:24:40
Время, которое он должен отобразить, является DateTimeOriginal jpg. Похоже, MediaCreateDate Mov отключен на пять часов, возможно, из-за сбоя часового пояса.
В любом случае, причина, по которой я задаю вопрос, заключается в том, что я хочу перейти от использования фотографий Apple к простому дереву папок в выпадающем списке. Проблема в том, что есть хорошая схема именования для сортировки. Я немного погуглил, и использование Hazel (плюс скрипт ниже) работает просто отлично, если бы не файлы mov живых фотографий. сортировать все мои фотографии (и живые фотографии) с приличной схемой именования.
Как настроить скрипт ниже, чтобы получить правильное имя для файлов mov?
Или, альтернативно
Как я могу использовать Hazel для указания каждому файлу mov иметь DateTimeOriginal jpg с тем же именем?
Под этой последней вещью я подразумеваю наличие скрипта, который при подаче файла mov ищет jpg с тем же именем и использует его DateTimeOriginal.
Кстати, второй ответ здесь ( формат файла Apple Live Photo), кажется, объясняет, как Photos отслеживает метаданные для файла 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
3 ответа
Также взвешиваю этот старый вопрос:
При работе с живыми фотографиями в виде отдельных файлов JPG и MOV метаданные позволят вам связать файлы. Файл MOV имеет тег EXIF с именем ContentIdentifier, который, по-видимому, идентичен тегу Apple_0x0011 в теге EXIF MakerNotes файла JPG.
Использование 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
Довольно старый на данный момент, но думал, что я буду весить.
GPSDateTime
всегда в UTC
часовой пояс (отсюда Z
добавлено к дате). Итак, похоже, что MediaCreateDate
устанавливается на UTC
время, с зоной, снятой.
Вот стратегия: вычтите 5 часов из времени изменения всех файлов.mov, затем действуйте как обычно:
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