在 python 中使用 mediainfo 提取电影名称
Posted
技术标签:
【中文标题】在 python 中使用 mediainfo 提取电影名称【英文标题】:Extracting Movie name using mediainfo within python 【发布时间】:2021-02-25 13:12:30 【问题描述】:我可以使用命令行从我的 avi 文件中获取电影名称
mediainfo --Inform="General;%Movie%" file.avi
在 python 中,我可以访问 mediainfo 结构
mediainfo = MediaInfo.parse(filename)
但是我无法找到命令行与数据结构的匹配方式。稀疏的文档和所有示例都在讨论轨道结构,当我的项目是通用时
不知道为什么这个网站只允许非常简短的评论,下面是评论
我很困惑。我正在查看的代码是 nemo-media-columns.py (https://github.com/linuxmint/nemo-extensions/blob/master/nemo-media-columns/nemo-media-columns.py) 有
从 pymediainfo 导入 MediaInfo ... 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
这与您的建议完全不同的语法,并且该示例讨论了在我的 Linux 世界中不存在的 DLL。我对这一切感到困惑,并且由于代码隐藏在应用程序中,因此诊断很困难。
【问题讨论】:
【参考方案1】: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 开发人员
【讨论】:
【参考方案2】:我最终得到:
#!/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)
【讨论】:
以上是关于在 python 中使用 mediainfo 提取电影名称的主要内容,如果未能解决你的问题,请参考以下文章
Python 2.7 mediainfo --inform 输出完整信息而不是一个字符串