Python – 如何阅读Windows“媒体创build”date不是文件创builddate

我有几个旧的video文件,我正在转换,以节省空间。 由于这些文件是个人video,我希望新文件具有旧文件的创build时间。

Windows有一个名为“媒体创build”的属性,它具有相机logging的实际时间。 这些文件修改时间通常是不正确的,所以有数百个文件无法工作。

我如何在Python中访问这个“媒体创build”date? 我一直在疯狂search,找不到它。 下面是创builddate和修改date匹配的代码示例:

files = [] for file in glob.glob("*.AVI"): files.append(file) for orig in files: origmtime = os.path.getmtime(orig) origatime = os.path.getatime(orig) mark = (origatime,origmtime) for target in glob.glob("*.mp4"): firstroot = target.split(".mp4")[0] if firstroot in orig: os.utime(target,mark)

鼠标双击不工作相当好

如何以编程方式在C#/ WPF中访问Windows Media Player库?

Windows Media编码器安装问题

在8秒内检测16 GB笔式驱动器上的内容更改

如何在C#中与Windows Media Player交互

将媒体别名设置为其他服务器

AVI文件使用WMP本地播放,但不能closures我的网站WMP ActiveX

如何通过Nginx提供django媒体文件

在WPF中embeddedWindows Media Player

C#:WMP,时间戳,以毫秒/十分之一秒为单位

正如Borealid指出的,“媒体创造”的价值不是文件系统元数据。 Windows shell从文件本身获取这个值作为元数据。 它可以在Windows中作为Windows属性访问 。 如果您使用Windows Vista或更高版本,并且安装了Windows的Python扩展,则可以轻松访问Windows外壳属性。 只需调用SHGetPropertyStoreFromParsingName ,你可以在propsys模块中找到它。 它返回一个PyIPropertyStore实例。 标记为“媒体创建”的属性是System.Media.DateEncoded 。 您可以使用属性键PKEY_Media_DateEncoded访问此属性,您可以在propsys.pscon找到该键。 在Python 3中,返回的值是一个datetime.datetime子类,UTC时间。 在Python 2中,值是具有提供strftime样式格式的Format方法自定义时间类型。 如果您需要将该值转换为本地时间,则pytz模块具有IANA时区数据库

例如:

import pytz import datetime from win32com.propsys import propsys,pscon properties = propsys.SHGetPropertyStoreFromParsingName(filepath) dt = properties.GetValue(pscon.PKEY_Media_DateEncoded).GetValue() if not isinstance(dt,datetime.datetime): # In Python 2,PyWin32 returns a custom time type instead of # using a datetime subclass. It has a Format method for strftime # style formatting,but let's just convert it to datetime: dt = datetime.datetime.fromtimestamp(int(dt)) dt = dt.replace(tzinfo=pytz.timezone('UTC')) dt_tokyo = dt.astimezone(pytz.timezone('Asia/Tokyo'))

如果您所说的属性来自相机,则不是文件系统权限:它是视频中的元数据,Windows正在读取并呈现给您。

这种类型的元数据的一个例子是JPEG图像的EXIF数据:什么类型的相机拍摄了照片,使用了什么设置等等。

您将需要打开.mp4文件并解析元数据,最好使用一些现有的库来做到这一点。 你不能从文件系统获取信息,因为它不在那里。

另一方面,如果你想要的只是文件创建日期(实际上并不是来自相机,而是在文件首次被放到当前计算机上时被设置,并且可能已被初始化为某个值以前在相机上)…可以用os.path.getctime(orig) 。

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....