Linux

批量設置 MP4 從文件名創建日期元數據

  • November 22, 2021

在 Linux 系統上,我有一堆名為 like20190228_155905.mp4但沒有元數據的 MP4 文件。我以前遇到過類似的問題,我用手動解決了一些 jpg

exiv2 -M"set Exif.Photo.DateTimeOriginal 2018:09:18 20:11:04" 20180918_201104.jpg

但據我所知,這DateTimeOriginal僅適用於圖像,不適用於影片。確實有元數據的影片有一個 Xmp.video.MediaCreateDate看起來像我想要的欄位。我猜它包含一個 Unix 時間戳,所以我需要一種方法來從文件名中獲取日期,將其轉換為 Unix 時間戳並將該值設置為Xmp.video.MediaCreateDate. 這一切都正確嗎?還是我把事情複雜化了?

編輯:如果我不清楚,我想使用包含日期的文件名在 mp4 文件上設置創建日期元數據,以便程序可以按元數據對我的所有媒體文件進行排序

這使用ffmpegsudo apt install ffmpeg安裝)並適用於您的確切文件名。它用帶有元數據集的新文件替換舊文件。也許先嘗試不使用該&& mv "~$f" "$f"部分:

$ for f in *.mp4; do ffmpeg -i "$f" -metadata creation_time="${f:0:4}-${f:4:2}-${f:6:2} ${f:9:2}:${f:11:2}:${f:13:2}" -codec copy "~$f" && mv "~$f" "$f"; done

檢查元數據:

$ ffprobe -v quiet 20190228_155905.mp4 -print_format json -show_entries stream=index,codec_type:stream_tags=creation_time:format_tags=creation_time

引用自:https://unix.stackexchange.com/questions/525333