Python: найдите время записи фильма .mp4

У меня есть Windows-телефон MS, который записывает приличные видео в формате .mp4. Глядя в галерею (фильм), все фотографии и видеоролики размещаются в том порядке, в котором они были сделаны.

В python мне посчастливилось найти "дату взятия" фотографий (с помощью модуля exifread), но было не повезло с видео.

Кто-нибудь знает, как получить эту информацию через python?

Я записал 3-секундный образец [Date: 2014/01/31] (загрузите его здесь), если кто-то захочет посмотреть формат файла.

2 ответа

Спасибо за образец. Я посмотрел на него и обнаружил, что, к сожалению, он был записан без данных временной метки.

В атоме moov присутствует атом mvhd. Это имеет временную метку создания и изменения. Они равны 0, поэтому мой инструмент из другого вопроса сообщает 1 января 1904 года для каждого (начало эпохи QuickTime). Копая глубже в атом moov, есть 2 trak атома (1 для видео и 1 для аудио). Оба они имеют атомы tkhd, которые также содержат временные метки создания и модификации... которые, как вы могли догадаться, также равны 0 для этого образца.

Существует несколько разных форматов метаданных с этими типами файлов. К сожалению, я не вижу никаких признаков этих или других пользовательских метаданных в коротком moov атоме.

Вы указали, что телефон способен отображать носитель в том порядке, в котором он был создан. Он должен использовать данные временной метки, которые не хранятся в этом файле (например, использование временных меток, хранящихся в файловой системе телефона). Возможно, вам придется выяснить, как получить доступ к этим данным, чтобы получить истинные временные метки создания, поскольку это программное обеспечение предпочитает не записывать их в сами файлы.


Это не родной Python, но вы можете вызвать Atomic Parsley через системный вызов, а затем проанализировать результаты. Кроме того, есть довольно хорошие библиотеки python для чтения метаданных из других мультимедийных форматов, таких как hachoir. Mpeg-4 заметно отсутствует в списке поддерживаемых форматов hachoir, но может быть возможно адаптировать его функциональность для mp4-производных форматов, таких как MOV.

licensed under cc by-sa 3.0 with attribution.