我有一個包含許多 .jpg 和 .mov 檔案的目錄。
每個 .jpg 的 DateTimeOriginal比FileModifyDate多三個小時,而 GPSDateTime 比FileModifyDate多八小時。
但是每個 .mov 既沒有 DateTimeOriginal 也沒有 GPSDateTime。
為了支持將來使用這些檔案,我想讓它們保持一致。在研究了一段時間的手冊頁之后,我嘗試了
exiftool '-DateTimeOriginal<FileModifyDate 03:00' \
'-GPSDateTime<FileModifyDate 08:00' *.MOV
但我收到一條錯誤訊息,說我必須使用 = 而不是 < 所以我嘗試了
exiftool '-DateTimeOriginal=FileModifyDate 03:00' \
'-GPSDateTime=FileModifyDate 08:00' *.MOV
并收到另一條訊息:
Warning: Invalid date/time (use YYYY:mm:dd HH:MM:SS[.ss][ /-HH:MM|Z]) in ExifIFD:DateTimeOriginal (PrintConvInv)
這意味著我必須用文字時間來處理每個標簽,而不是從另一個標簽開始計算。
我看到我可以將一個標簽復制到另一個標簽,然后使用 = 或 -= 在另一步驟中更改它。但是有沒有辦法在一個命令中完成呢?
uj5u.com熱心網友回復:
首先是答案,但請參閱下文了解一些可能的并發癥。
如果兩個值的時移相同,那么您將使用GlobalTimeShift選項,但由于情況并非如此,您需要使用ShiftTime輔助函式。
此外,GPSDateTimeMOV 檔案中的標簽將是一個 XMP 標簽(特別是在XMP-exif組中),它允許包含時區并且不需要設定為 UTC。由于FileModifyDate已經包含一個時區,并且看起來您想將其轉換為 UTC,因此您將不得不去掉時區。您可以使用-d( -dateFormat) 選項(將全域設定日期格式)或DateFmt輔助函式(對單個標簽起作用)來執行此操作。Perl 正則運算式替換也是一個選項,但對于此示例,我將使用該DateFmt選項。
你的命令是
exiftool '-DateTimeOriginal<${FileModifyDate;ShiftTime("3")}' '-GPSDateTime<${FileModifyDate;ShiftTime("8");DateFmt("%Y:%m:%d %H:%M:%S")}' *.MOV
對于該ShiftTime函式,您只需要列出要移動的小時數,因為這是包含日期和時間的標簽中的默認值。有關詳細資訊,請參閱ExifTool 日期/時間偏移模塊。
現在,您撰寫此資料的方式存在一些問題。在 MOV 檔案中,exiftool 將在標簽中包含時區,DateTimeOriginal除非強制不這樣做。如果不包括時區,則 exiftool 將默認為計算機的本地時區。因此,如果本地時區不適用于您的偏移DateTimeOriginal時間,則您需要將其包括在內。上述命令的變化是
'-DateTimeOriginal<${FileModifyDate;ShiftTime("3")}±##:00'
雖然規范說DateTimeOriginal視頻檔案中的標簽不需要包含時區,但如果不包含時區,Apple 程式將顯示非常不準確的日期/時間(請參閱此 Exiftool 論壇主題)。
除了 Quicktime 標簽外, Exiftool 還將寫入XMP-exif:DateTimeOriginal標簽。
對于GPSDateTime,如果檔案的其他時間戳準確無誤,可能有更好的寫法。在視頻檔案中,CreateDate應該設定為 UTC。如果正確設定了該標簽,那么GPSDateTime像這樣設定會更容易
'-GPSDateTime<CreateDate'
應該注意的Quicktime:DateTimeOriginal是,大多數程式并不經常讀取,Apple 照片應用程式是一個例外。此外,視頻檔案中的 XMP 標簽(在本例中為XMP-exif:DateTimeOriginal和XMP-exif:GPSDateTime)通常不會被大多數程式使用,Adobe 程式除外。這Quicktime:CreateDate是使用最廣泛的標簽,因為它應該是 UTC,它也適用于 GPS 日期/時間。
為了分解為什么你的原始命令不起作用,在第一種情況下,你在標簽的名稱中添加了一個靜態字串。這導致 exiftool 將整個事物視為一個字串,這就是為什么它告訴您使用等號=而不是大于/小于符號</>并且大于/小于符號僅在復制標簽時使用。當您將其更改為等號時,您現在正在撰寫一個靜態字串,并且由于DateTimeOriginal標記需要日期/時間格式,您會收到Invalid date/time錯誤訊息。
將標簽名稱與靜態字串組合時,需要在標簽名稱前加上美元符號。-TagsFromFile有關詳細資訊,請參閱選項下以“強大的重定向功能”開頭的段落。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/537298.html
標籤:约会时间导出工具
