Я использую носимую камеру Bluetooth Wi-Fi . Как узнать время, когда был сделан тот или иной снимок?
До сих пор я пытался посмотреть метаданные в jpg с помощью Exiftool . Я могу только видеть, когда изображения были перемещены с карты micro-SD на мой компьютер через это.
Я знаю, что данные о времени, когда был сделан снимок, доступны. Потому что камера поставляется с приложением для Android, и я могу видеть время, когда снимок был сделан через приложение.
Но как только я перемещаю картинку с карты microSD на свой компьютер, я не знаю, где ее снова найти.
Где может скрываться это время?
РЕДАКТИРОВАТЬ:
(Следующее решение предназначено для Linux-машины. Однако для других ОС можно сделать что-то похожее по духу: СОХРАНИТЕ свои метаданные , прежде чем перемещать изображения куда-либо с MicroSD)
Используя эту команду перед перемещением изображений с карты MicroSD:exiftool /path/to/file/filename.JPG | grep Modification
дает вывод:
File Modification Date/Time : 2017:05:20 01:47:38+05:30
Но фактическое время создания в этом случае было 2017:05:19 20:17:38
получено путем вычитания +5:30
для моего часового пояса.
Если кто-то переместит файл на компьютер, вышеуказанные данные будут безвозвратно перезаписаны. Итак, у меня есть скрипт bash, с помощью которого я переименовываю файл со временем его создания, прежде чем перемещать его куда-либо.
Вот сценарий:
#!/bin/bash
cd "/path/to/file"
for file in *
do
out="$(exiftool $file | grep Modification)"
out=${out:34:19}
out=${out/":"/"-"}
out=${out/":"/"-"}
out=$(date -d "$out")
out=$(date -d "$out -330 minutes" +'%Y-%m-%d-%H%M%S')
# Replace -330 with offset needed for your timezone
if [[ $file == *.jpg ]]
then
mv "$file" "${out}.JPG"
fi
if [[ $file == *.MP4 ]]
then
mv "$file" "${out}.MP4"
fi
done
Я доволен этим на данный момент.
Я бы предложил сохранить метку времени непосредственно в метаданных файла. Вы можете сделать это и переименовать весь каталог с помощью одной команды exiftool.
Попробуй это:
exiftool -globalTimeShift -5:30 -d '%Y-%m-%d-%H%M%S.%%e' '-ModifyDate<FileModifyDate#' '-CreateDate<FileModifyDate#' '-DateTimeOriginal<FileModifyDate#' '-Filename<FileModifyDate' /path/to/Target/Dir
Разбивка:
-globalTimeShift -5:30
: сдвигает все метки даты/времени. В этом случае вычитает 5 часов 30 минут, на которые вам нужно пересесть.
-d '%Y-%m-%d-%H%M%S.%%e'
: переформатирует все теги даты в формат, который вы хотите использовать для переименования файла.
'-ModifyDate<FileModifyDate#'
…: Копирует FileModifyDate
в три перечисленных тега ( DateTimeOriginal
, CreateDate
, и ModifyDate
), смещенные, как указано выше. Хэштег говорит exiftool использовать тег, не измененный -d
опцией. В этом случае Exiftool отлично работал бы без него, но если бы -d
параметр был другим, например, вы использовали формат даты в США, это могло бы повлиять и сохранить неправильную временную метку.
'-Filename<FileModifyDate'
: переименовывает файл в желаемый формат.
Вы обнаружите, что это намного быстрее, чем сценарий, особенно в случае большого количества файлов, поскольку exiftool должен запускаться только один раз, а не один раз для каждого файла.
Дополнительно:
добавьте -r
, если вы хотите рекурсивно обращаться к подкаталогам. Добавьте -overwrite_original
, чтобы избежать создания резервных копий _original
файлов.
(Следующее решение предназначено для Linux-машины. Однако для других ОС можно сделать что-то похожее по духу: СОХРАНИТЕ свои метаданные , прежде чем перемещать изображения куда-либо с MicroSD)
Используя эту команду перед перемещением изображений с карты MicroSD:exiftool /path/to/file/filename.JPG | grep Modification
дает вывод:
File Modification Date/Time : 2017:05:20 01:47:38+05:30
Но фактическое время создания в этом случае было 2017:05:19 20:17:38
получено путем вычитания +5:30
для моего часового пояса.
Если кто-то переместит файл на компьютер, вышеуказанные данные будут безвозвратно перезаписаны. Итак, у меня есть скрипт bash, с помощью которого я переименовываю файл со временем его создания, прежде чем перемещать его куда-либо.
Вот сценарий:
#!/bin/bash
cd "/path/to/file"
for file in *
do
out="$(exiftool $file | grep Modification)"
out=${out:34:19}
out=${out/":"/"-"}
out=${out/":"/"-"}
out=$(date -d "$out")
out=$(date -d "$out -330 minutes" +'%Y-%m-%d-%H%M%S')
# Replace -330 with offset needed for your timezone
if [[ $file == *.jpg ]]
then
mv "$file" "${out}.JPG"
fi
if [[ $file == *.MP4 ]]
then
mv "$file" "${out}.MP4"
fi
done
Я доволен этим на данный момент.
Филип Кендалл
Скоттбб
exiftool
? Можете ли вы опубликовать выводexiftool
?Вдохновленный_синий
матдм
Вдохновленный_синий
File Inode Change Date/Time
переменная, похоже, связана со временем захвата. Это потому, что я делаю снимки в режиме интервальной съемки, и каждое изображение увеличивается на 1 минуту. Но время смещено на некоторую величину, и я пока не знаю, будет ли оно все время смещаться на эту постоянную величину.СтарГик
exiftool -s -a -g1 -U
? Если с-U
опцией появляется что-то лишнее, значит есть фрагмент данных, о котором exiftool не знает. В таком случае Филу Харви, создателю exiftool, вероятно, было бы интересно взглянуть. Вы можете связаться с ним на форумах Exiftool . Если больше ничего не появляется, возможно, используются системные метки времени, такие как FileCreateDate или FileModifyDate.Скоттбб
fileA.jpg
иfileB.jpg
(просто выберите два файла на картеfileA
иfileB
являются заполнителями) в приложении, а затем извлеките карту MicroSD. На вашем компьютере поменяйте местами имена двух файлов и вставьте карту MicroSD обратно. Если приложение Android показывает одну и ту же дату файлаfileA
как до, так и после замены имени файла, то данные поступают не из файла; он хранится вне файла.Вдохновленный_синий
File Modification Date/Time
из метаданных, вероятно, то, что обнаруживает приложение. 2. Но эта переменная компенсируется часовым поясом, в котором я нахожусь. 3. При замене картинки обратно на карту microSD через некоторое время (т.е. не сразу) приложение тоже ошибается. Итак, тайна раскрыта. Я добавляю сценарий bash выше, который будет постоянно извлекать время создания в имя файла.Скоттбб