
Я использую ffmpeg для конвертации некоторых своих видео, записанных на телефоне Android (Samsung Galaxy S9+):
ffmpeg -i src.mp4 -metadata creation_time="2013-05-02 22:01:04" -c:v libx265 -crf 24 -preset ultrafast -c:a aac -b:a 160k target.mp4
Моя цель — сохранить метаданные после перекодирования, особенно creation_time.
Когда я смотрю в MediaInfo, creation_time, кажется, правильный. Указанная мной дата появляется во всех потоках и даже в части контейнера.
Однако если я скопирую файл на свой Samsung, в галерее он будет отображаться не с этой датой, а с датой изменения (на уровне файла).
Итак, когда я меняю дату изменения файла, она меняется и на Android.
Когда я беру файл mp4, записанный камерой телефона, и меняю в нем дату изменения файла, в галерее на телефоне по-прежнему отображается исходная дата.
Значит, должно быть что-то в том, как камера Samsung хранит информацию о дате, или, может быть, есть особый способ кодирования с помощью ffmpeg, чтобы время создания распознавалось Android.
Сравнивая оба файла с помощью MediaInfo и просматривая временные метки, я не могу найти ничего, что могло бы отсутствовать в закодированном файле.
Есть ли у кого-нибудь идеи?