使用 python 内的媒体信息提取电影名称

Extracting Movie name using mediainfo within python

我可以使用命令行从我的 avi 文件中获取电影名称

mediainfo --Inform="General;%Movie%" file.avi

在 python 我可以访问 mediainfo 结构

mediainfo = MediaInfo.parse(filename)

但是我在哪里都找不到命令行与数据结构的匹配方式。当我的项目处于 General

时,稀疏文档和所有示例都在谈论轨道结构

不知道为什么这个网站只允许非常简短的评论,下面是评论

我很困惑。我正在查看的代码是 nemo-media-columns.py (https://github.com/linuxmint/nemo-extensions/blob/master/nemo-media-columns/nemo-media-columns.py) has

从 pymediainfo 导入 MediaInfo ... 媒体信息 = MediaInfo.parse(文件名)

            duration = 0

            for trackobj in mediainfo.tracks:
                track = trackobj.to_data()

                if track["track_type"] == "Video":
                    try:
                        info.pixeldimensions = "%dx%d" % (track["width"], track["height"])
                    except:
                        pass

这与您的建议完全不同,该示例讨论的 DLL 在我的 Linux 世界中不存在。我对这一切感到困惑,并且由于代码隐藏在应用程序中,因此很难进行诊断。

mediainfo --Inform="General;%Movie%" file.avi

Python 等价于:

MI = MediaInfo()
MI.Open("file.avi")
MI.Get(Stream.General, 0, "Movie")

您可以获得有关如何使用 Python 绑定(包括字段名称列表)的示例 at this place

编辑回答您的编辑:您的第一个问题是关于 Python 内的 MediaInfo(并且仍然是问题的标题),而不是“pymediainfo”,我在 Python 内回答了 MediaInfo。 MediaInfo 有一个 Python 绑定(对于 Windows/macOS/Linux,“DLL”代表动态加载库,是 MediaInfo 中所有平台的通用名称,它在 Windows .dll 中运行良好,Linux .so 和 macOS .dylib) 以及我的示例在您的“Linux 世界”上运行良好; pymediainfo 是具有自己接口的第三方绑定,但实际上这与 pymediainfo 使用 MediaInfo 字段名称的字段名称相似。仅供参考,“电影”和“标题”在 MediaInfo 中是同义词,pymediainfo 更喜欢“标题”。简而言之,如果您使用 pymediainfo 表明您使用 pymediainfo 这样当您想要有关 pymediainfo 的答案时人们不会感到困惑但是您说您在 Python.

中使用 MediaInfo

Jérôme,MediaInfo 的开发者

我最终得到:

#!/usr/bin/python3

from pymediainfo import MediaInfo

mediainfo = MediaInfo.parse('1.avi')

for trackobj in mediainfo.tracks:
    track = trackobj.to_data()

    if track["track_type"] == "General":
        try:
            title = (track['title'])
        except:
            title = 'Unknown'

print(title)