我有一个由手机Messenger应用发送的.MOV视频。我可以检索文件和作者的真实创建数据吗?我尝试使用ffprobe,mediainfo和类似工具,但下载时仅提供日期。
最佳答案
我写了一个快速的Python脚本,它很容易找到,因此可以获取创建和修改时间戳。寻找作者比较困难,因为它可以通过几种不同的方式存储。用法示例:
$ ./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。如果看到的日期是1970年1月1日,则该文件可能是由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)