20190228_155905.mp4
Linuxシステムには名前が似ていますが、メタデータを持たない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