写真と動画を自動整理するにあたって撮影日時を知りたいのでExif情報を調べます。
Exif情報を取得する方法
このExifToolを使います。
sudo apt install libimage-exiftool-perl
これでexiftoolをインストールします。
exiftool -time:all -s sourcefile
これでsourcefileの日時情報を出力できます。
Phockupが使用しているExif情報
Phockupで写真を日付フォルダに整理する-p--qのPhockupではどのExif情報を日時として使用しているか phockup/date.pyに書いてあります。
'SubSecCreateDate', 'SubSecDateTimeOriginal',
'CreateDate','DateTimeOriginal'
オプションがなければこの順に撮影日時を取得して取得できた時点でその値を使っています。
さらにそれに続いてTimeZoneへの対応もありますが、Exif情報のTimeZoneの項目は標準規格ではなくNikon固有のものらしくExifToolでは追加はできませんでした(Adding/Modifying timezones)。
iPhoneで撮影したもの
iPhoneは写真も動画も一緒に連番のファイル名が付与されるだけでファイル名から日時を取得することはできません。
iPhone ー> NAS ー> PC
写真
iPhone 11 Proで撮影した写真や動画を整理してHDDに収めるまでの手順-p--qの方法でiPhoneからNASに転送して、さらにそのファイルをローカルPCにコピーしたJPGファイルです。
pq@nuc8i7beh:~$ exiftool -time:all -s IMG_5777.JPG
FileModifyDate : 2022:10:24 11:20:11+09:00
FileAccessDate : 2023:04:14 12:45:58+09:00
FileInodeChangeDate : 2023:04:14 12:46:12+09:00
ModifyDate : 2022:10:24 11:20:12
DateTimeOriginal : 2022:10:24 11:20:12
CreateDate : 2022:10:24 11:20:12
OffsetTime : +09:00
OffsetTimeOriginal : +09:00
OffsetTimeDigitized : +09:00
SubSecTimeOriginal : 257
SubSecTimeDigitized : 257
ProfileDateTime : 2022:01:01 00:00:00
SubSecCreateDate : 2022:10:24 11:20:12.257+09:00
SubSecDateTimeOriginal : 2022:10:24 11:20:12.257+09:00
SubSecModifyDate : 2022:10:24 11:20:12+09:00
FileAccessDateとFileInodeChangeDateはローカルPCに転送した日時になっています。ProfileDateTimeは撮影日時とは全く関係ありません。
ModifyDate、DateTimeOriginal、CreateDateはTimeZone情報のない日時になっていますが、それはOffsetTimeでJSTにしていることを示しているようです。SubSecCreateDate、SubSecDateTimeOriginal、SubSecModifyDateはTimeZone情報のある日時になっています。
FileModifyDateがこれらの日時より1秒早いのはこれはファイル作成日時を表しており、写真の圧縮処理が終わったのがその1秒後ということかと思われます。
動画
pq@nuc8i7beh:~$ exiftool -time:all -s IMG_5768.MOV
FileModifyDate : 2022:10:23 11:18:00+09:00
FileAccessDate : 2023:04:16 12:44:23+09:00
FileInodeChangeDate : 2023:04:16 12:44:45+09:00
CreateDate : 2022:10:23 02:18:00
ModifyDate : 2022:10:23 02:18:53
TrackCreateDate : 2022:10:23 02:18:00
TrackModifyDate : 2022:10:23 02:18:53
MediaCreateDate : 2022:10:23 02:18:00
MediaModifyDate : 2022:10:23 02:18:53
CreationDate : 2022:10:23 11:18:00+09:00
OffsetTimeはありませんがCreateDateなどはUTCになっています。CreationDateはJSTとわかります。CreateDateもCreationDateもファイル書き込み完了日時になっています。
ということでiPhoneで撮影した写真はCreateDate、動画はCreationDateで撮影日時を取得できます。
iPhone ー> LINE ー> iPhone ー> NAS ー> PC
写真
pq@nuc10i5fnh:~$ exiftool -time:all -s IMG_6134.JPG
FileModifyDate : 2022:11:26 18:26:48+09:00
FileAccessDate : 2023:04:14 09:00:00+09:00
FileInodeChangeDate : 2023:04:15 09:44:52+09:00
ProfileDateTime : 2022:01:01 00:00:00
写真はLINE ー> iPhoneの日時がFileModifyDateにあるだけで撮影日時は全くわかりません。
動画
pq@nuc8i7beh:~$ exiftool -time:all -s 17316263421674.MP4
FileModifyDate : 2022:12:18 19:54:51+09:00
FileAccessDate : 2023:04:16 12:54:08+09:00
FileInodeChangeDate : 2023:04:16 12:54:48+09:00
CreateDate : 2022:12:18 10:54:51
ModifyDate : 2022:12:18 10:54:56
TrackCreateDate : 2022:12:18 10:54:51
TrackModifyDate : 2022:12:18 10:54:56
MediaCreateDate : 2022:12:18 10:54:51
MediaModifyDate : 2022:12:18 10:54:56
これはmp4ファイルになっているのでiPhoneで何らかのアプリを使って作成した動画と思ったのですが、そうではなくてLINEを通すとmovファイルがmp4ファイルに変換されるようです。CreateDateがFileModifyDateのJSTに対するUCTになっているだけでこれも撮影日時はわかりません。Redmi Note 9Sで撮影した動画もLINEを通すと日時についてはこれと同じ項目しか残りませんでした。
ということでLINEを通して得たものはいずれも撮影日時を得ることはできません。
Redmi Note 9Sで撮影したもの
Redmi Note 9Sは写真も動画もファイル名に撮影日時がちゃんと記録されます。
Redmi Note 9S ー> LINE ー> iPhone ー> NAS ー> PC
写真
pq@nuc10i5fnh:~$ exiftool -time:all -s IMG_6817.JPG
FileModifyDate : 2023:03:30 16:34:30+09:00
FileAccessDate : 2023:04:14 09:00:00+09:00
FileInodeChangeDate : 2023:04:15 09:44:52+09:00
ProfileDateTime : 2022:01:01 00:00:00
これもLINE ー> iPhoneの日時がわかるだけで撮影日時はわかりません。Redmi Note 9Sではファイル名が撮影日時になっていましたがファイル名も変更されてしまっています。
結局LINEを通すとすべて撮影日時は失われるようです。
Redmi Note 9S ー> NAS ー> PC
写真
pq@nuc8i7beh:~$ exiftool -time:all -s IMG_20230403_162649.jpg
FileModifyDate : 2023:04:03 16:26:50+09:00
FileAccessDate : 2023:04:14 12:43:50+09:00
FileInodeChangeDate : 2023:04:14 12:45:38+09:00
ModifyDate : 2023:04:03 16:26:50
SubSecTimeDigitized : 640136
SubSecTimeOriginal : 640136
SubSecTime : 640136
CreateDate : 2023:04:03 16:26:50
DateTimeOriginal : 2023:04:03 16:26:50
GPSTimeStamp : 07:26:50
GPSDateStamp : 2023:04:03
SubSecCreateDate : 2023:04:03 16:26:50.640136
SubSecDateTimeOriginal : 2023:04:03 16:26:50.640136
SubSecModifyDate : 2023:04:03 16:26:50.640136
GPSDateTime : 2023:04:03 07:26:50Z
Redmi Note 9SはOffsetTimeはありませんがCreateDateは撮影日時のJSTになっています。ファイル名も撮影日時になっていますが1秒異なるのはファイル名はファイル書き込み開始時でCreateDateはファイル書き込み完了時になっているのかもしれません。
動画
pq@nuc8i7beh:~$ exiftool -time:all -s VID_20230311_170623.mp4
FileModifyDate : 2023:03:11 17:06:36+09:00
FileAccessDate : 2023:03:11 17:06:36+09:00
FileInodeChangeDate : 2023:04:14 12:44:17+09:00
CreateDate : 2023:03:11 08:06:36
ModifyDate : 2023:03:11 08:06:36
TrackCreateDate : 2023:03:11 08:06:36
TrackModifyDate : 2023:03:11 08:06:36
MediaCreateDate : 2023:03:11 08:06:36
MediaModifyDate : 2023:03:11 08:06:36
動画にもCreateDateがありますがこれはUTCになっています。iPhoneの動画と違ってCreationDateはないのでExif情報からJSTを得るにはCreateDateから算出しないといけません。
ファイル名はファイル書き込み開始日時になっておりCreateDateはファイル書き込み完了日時になっています。
LINEからダウンロードした動画との違いを探す
CreationDateの有無でLINEからダウンロードした動画と区別できるiPhoneで撮影した動画と違ってRedmi Note 9Sで撮影した動画は時間に関するExif情報ではLINEでダウロードしたものと区別できません。
Exif情報の項目を比べた結果GPSCoordinates、GPSLatitude、GPSLongitude、GPSPositionの4つの項目がLINEからダウンロードした動画にはないことがわかりました。
ただしこれらGPS関連の項目はカメラの設定で「撮影場所を保存」にしておかないと出てきません。
写真と動画のExif情報から撮影日時を得る方法のまとめ
LINEを通して取得した写真はExif情報がすべて失われており撮影日時の取得はできません。
LINEを通して取得した動画はCreateDateがありますがこれはファイルを取得したUTCなので撮影日時の取得はできません。
Redmi Note 9Sで撮影した写真はファイル名かCreateDateから撮影日時を取得できます。
Redmi Note 9Sで撮影した動画はファイル名かCreateDateをJSTに変換して撮影日時を取得できます。
iPhoneで撮影した写真はCreateDateから撮影日時を取得できます。
iPhoneで撮影した動画はCreationDateかCreateDateはJSTに変換して撮影日時を取得できます。
0 件のコメント:
コメントを投稿