Linux
批量設置 MP4 從文件名創建日期元數據
在 Linux 系統上,我有一堆名為 like
20190228_155905.mp4
但沒有元數據的 MP4 文件。我以前遇到過類似的問題,我用手動解決了一些 jpgexiv2 -M"set Exif.Photo.DateTimeOriginal 2018:09:18 20:11:04" 20180918_201104.jpg
但據我所知,這
DateTimeOriginal
僅適用於圖像,不適用於影片。確實有元數據的影片有一個Xmp.video.MediaCreateDate
看起來像我想要的欄位。我猜它包含一個 Unix 時間戳,所以我需要一種方法來從文件名中獲取日期,將其轉換為 Unix 時間戳並將該值設置為Xmp.video.MediaCreateDate
. 這一切都正確嗎?還是我把事情複雜化了?編輯:如果我不清楚,我想使用包含日期的文件名在 mp4 文件上設置創建日期元數據,以便程序可以按元數據對我的所有媒體文件進行排序
這使用ffmpeg(
sudo 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