일괄 세트 MP4는 파일 이름에서 날짜 메타데이터를 생성합니다.

일괄 세트 MP4는 파일 이름에서 날짜 메타데이터를 생성합니다.

20190228_155905.mp4Linux 시스템에는 이름이 비슷 하지만 메타데이터는 없는 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 파일에 생성 날짜 메타데이터를 설정하고 싶습니다.

답변1

이는 다음을 사용합니다.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

답변2

또 다른 옵션은 다음을 사용하는 것입니다.exiftool

이 예에서는 먼저 touch파일 수정 시간 설정을 실행한 후 다음을 수행합니다.

exiftool '-CreateDate<FileModifyDate' \
  '-TrackCreateDate<FileModifyDate' \
  '-MediaCreateDate<FileModifyDate' \
  filename.mp4

관련 정보