Je suis curieux de savoir si quelqu'un pourrait me donner un aperçu d'un problème actuel que j'ai.
Dans certains cas, ma femme et moi avons un téléphone Android (Moto G5 Plus). Les téléphones synchronisent tous les éléments du dossier DCIM sur mon serveur Ubuntu via SFTP. Les éléments sont stockés dans un répertoire "unsorted_pictures". Une fois par nuit, un travail cron est exécuté et exécute un script qui copie automatiquement le contenu de unsorted_pictures sur images/année/mois. Plus tard (après le nombre maximal de téléphones dans l'espace), je purgerai le répertoire unsorted_pictures en tant qu'étape de maintenance.
Le script, quelle que soit sa valeur, est le suivant:
#!/bin/bash
exiftool -overwrite_original_in_place -P -if 'not $CreateDate' '-CreateDate<FileModifyDate' -r /mnt/vault/unsorted_pictures/staging
exiftool -o . '-Directory<CreateDate' -d /mnt/vault/pictures/%Y/%m -r /mnt/vault/unsorted_pictures/staging
exit
Donc, fondamentalement, la première ligne exiftool vérifie si CreateDate existe. Si ce n'est pas le cas, il utilise FileModifyDate pour créer le paramètre CreateDate. Cela n’est utile que pour les images enregistrées via les conversations Hangouts, car Google semble supprimer les données exif. (?!) Après cela, la deuxième ligne exiftool effectue la copie + le tri.
Ce processus est assez étonnant et j'en suis très heureux. Il y a cependant un snafu: les fichiers vidéo semblent enregistrer à l'heure UTC, alors que les images semblent être enregistrées à l'heure locale. Ci-dessous, un fichier vidéo qui a été pris, immédiatement transféré sur mon serveur, et exiftool a été exécuté pour vérifier tous les horodatages.
administrator@vault:/mnt/vault/unsorted_pictures$ exiftool -time:all -s VID_20171225_214456599.mp4
FileModifyDate : 2017:12:25 21:47:02-05:00
FileAccessDate : 2017:12:25 21:47:00-05:00
FileInodeChangeDate : 2017:12:25 21:47:02-05:00
CreateDate : 2017:12:26 02:45:00
ModifyDate : 2017:12:26 02:45:00
TrackCreateDate : 2017:12:26 02:45:00
TrackModifyDate : 2017:12:26 02:45:00
MediaCreateDate : 2017:12:26 02:45:00
MediaModifyDate : 2017:12:26 02:45:00
administrator@vault:/mnt/vault/unsorted_pictures$ date
Mon Dec 25 21:47:23 EST 2017
Comme vous pouvez le constater, CreateDate est apparemment fixé à une date ultérieure. Plus bas, j'ai lancé la commande "date" afin que vous puissiez voir l'heure locale actuelle à laquelle cela s'est produit. Dans les lignes supérieures, vous pouvez voir les horodatages se terminant par 05:00, ce qui est à mon avis le décalage horaire par rapport à UTC.
Sur mes questions réelles:
1) J'ai essayé plusieurs applications pour appareils photo sur mon Motorola, mais elles ont toutes donné le même comportement. Cela suggère que ce n'est pas un paramètre spécifique à l'application. Est-il possible d'empêcher l'enregistrement de mes vidéos au format UTC? Les images sont bonnes, c'est juste vidéos. Je trouve cela un peu étrange, mais la recherche en ligne suggère que c'est courant, mais je n'ai pas encore entendu et compris pourquoi.
2) Je suis sûr que je peux ajouter une certaine logique à mon script pour trier simplement les images via CreateDate et les types de fichiers vidéo via FileModifyDate, ou même ajouter un paramètre supplémentaire pour re-dater systématiquement toutes les vidéos de 5 heures. Mais je me suis demandé si il y avait moyen de consulter exiftool un fichier mp4 et de reconnaître la différence de temps UTC. Je sais que les fichiers vidéo sont une bête différente et qu'exiftool est largement centré sur les images, mais même dans le cas où exiftool réussit si bien à reconnaître les métadonnées, même sur ces vidéos, cela me faisait penser qu'il pourrait y avoir un moyen de le modifier. heure autre que UTC. Ou peut-être n'y a-t-il pas d'espoir si le téléphone enregistre en heure UTC. /hausser les épaules
C’est peut-être une raison de plus pour trier par année/mois plutôt que par année/mois/jour, car je ne dirai même pas que les vidéos sont décalées de 5 heures car elles seront toutes dans le répertoire de ce mois. Mais encore, je me trouve intrigué par cela et je me demande… pourquoi?
Toute aide ou vision serait très appréciée!
Selon Phil Harvey (le créateur d’exiftool), les horodatages Quicktime sont supposés être réglés sur l’heure UTC conformément à la norme. Mais il semble que beaucoup de caméras ne le font pas, donc exiftool n'assume pas le fuseau horaire et accepte l'heure telle qu'elle est écrite. Voir troisième paragraphe sous les balises Quicktime
Exiftool inclut une option pour corriger cela. Si vous exécutez exiftool ver 9.40 ou une version ultérieure, vous pouvez ajouter -api QuickTimeUTC
à la commande. Les horodatages sont alors correctement écrits au format UTC et convertis en heure locale.