【问题标题】:How can I read & write "comments" metadata from .mp4 files with python?如何使用 python 从 .mp4 文件中读取和写入“评论”元数据?
【发布时间】:2020-04-27 05:08:44
【问题描述】:

如果他们还没有 cmets,我正在尝试根据创建的数据(例如:视频中孩子的年龄)将 cmets 添加到我的视频文件中。我想阅读每个文件的文件描述中的 cmets 部分以确保它是空的,然后根据文件的创建时间添加注释。很简单,可以在 Windows 资源管理器中手动完成(右键单击->属性->详细信息->说明部分->注释)。

我知道如何使用 stat() 从大多数文件中获取一些元数据,例如创建日期,但我还没有设法访问 .mp4 文件的 cmets 部分。

from pathlib import Path

testDir = r"C:\temp\test"
current_dir = Path(testDir)

for current_file in current_dir.iterdir():
    info = current_file.stat()
    print(info.st_mtime)
    print(info.comments) # This just throws an 'os.stat_result' object has no attribute 'comments' error

【问题讨论】:

  • 你致力于使用python吗? Exiftool 可以写入 MP4/Mov 文件中的注释标签,但不能写入 MKV。如果在 Mac/Linux 上,您的命令将类似于 exiftool -if "not $comment" -comment="new comment" /path/to/files/ 将双引号更改为单引号。
  • 感谢@StarGeek,非常感谢。 Exiftool 实际上有一个 python 包装器,所以在玩弄了它之后,我设法让它做我想做的事情。

标签: python comments metadata mp4


【解决方案1】:

感谢@StarGeek 为我指明了正确的方向,因为他建议的Exiftool 有一个名为PyExifTool 的python 包装器,它允许使用python 控制ExifTool。 我在这里分享我的解决方案,以防其他人感兴趣:

import exiftool

vidFile = r"C:\temp\test\2019-09-02 19.52.14.mp4"
with exiftool.ExifTool() as et:
    vidComment = et.get_tag("comment", vidFile)
    if vidComment is None or vidComment == "":
        newComment = '-comment="written by Pyexiftool"'
        et.execute(bytes(newComment, 'utf-8'), bytes(vidFile,"utf-8"))

需要下载 Exiftool,重命名为 exiftool(不带选项)和 Path 中引用的 .exe 文件。 PyExiftool 需要存在和导入。 一个警告:第一次重命名评论不会出现在 Windows 资源管理器中(不知道 Mac/Linux),即使它存在于元数据中。我不知道为什么会这样。但是,在手动设置注释后,可以通过 exiftool 更改它并在 Windows 资源管理器中可见。 目前对我来说已经足够好了,我可以通过一次手动操作选择和更改文件夹中所有文件的 cmets,然后让 python 将 cmets 更改为有用的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2015-11-19
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    相关资源
    最近更新 更多