Метаданные 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

Другие вопросы по тегам