Получение метаданных для видео MOV

У меня есть видео .MOV, отправленное приложением для телефона. Могу ли я получить реальные данные о создании файла и автора? Я пытался использовать ffprobe, mediainfo и аналогичный инструмент, но дал мне только дату, когда я его загрузил.

1 ответ

Я написал быстрый Python script, который может получить временные метки создания и изменения, поскольку их легко найти. Найти автора немного сложнее, потому что его можно хранить несколькими способами. Пример использования:

$ ./mov-timestamps.py file.mov
creation date: 2013-03-29 16:14:01
modification date: 2013-03-29 16:14:13

Иногда вы можете увидеть дату 1/1/1904. Это означает, что отметка времени равна 0. Если вы видите дату 1/1/1970, файл, вероятно, был сгенерирован FFmpeg, который не сохраняет эти метаданные по соображениям безопасности.

#!/usr/bin/python
import datetime
import struct
import sys
ATOM_HEADER_SIZE = 8
# difference between Unix epoch and QuickTime epoch, in seconds
EPOCH_ADJUSTER = 2082844800
if len(sys.argv) < 2:
 print "USAGE: mov-length.py <file.mov>"
 sys.exit(1)
# open file and search for moov item
f = open(sys.argv[1], "rb")
while 1:
 atom_header = f.read(ATOM_HEADER_SIZE)
 if atom_header[4:8] == 'moov':
 break
 else:
 atom_size = struct.unpack(">I", atom_header[0:4])[0]
 f.seek(atom_size - 8, 1)
# found 'moov', look for 'mvhd' and timestamps
atom_header = f.read(ATOM_HEADER_SIZE)
if atom_header[4:8] == 'cmov':
 print "moov atom is compressed"
elif atom_header[4:8] != 'mvhd':
 print "expected to find 'mvhd' header"
else:
 f.seek(4, 1)
 creation_date = struct.unpack(">I", f.read(4))[0]
 modification_date = struct.unpack(">I", f.read(4))[0]
 print "creation date:",
 print datetime.datetime.utcfromtimestamp(creation_date - EPOCH_ADJUSTER)
 print "modification date:",
 print datetime.datetime.utcfromtimestamp(modification_date - EPOCH_ADJUSTER)
</file.mov>

licensed under cc by-sa 3.0 with attribution.