使用 QML 从委托文件中获取元数据

Posted

技术标签:

【中文标题】使用 QML 从委托文件中获取元数据【英文标题】:Get meta data from delegated files using QML 【发布时间】:2013-05-08 13:05:17 【问题描述】:

我正在为 QML 中的 Ubuntu Touch 创建一个音乐播放器,由于我是 QML 新手,因此我有一些事情我希望能得到一些帮助。

我有一个目录中的曲目列表,但我想显示元数据(艺术家、曲目名称、年份、专辑等)而不是文件名。

使用 Qt.Multimedia 能够从当前播放的曲目中获取元数据,但我无法从我的 FolderListModel 委托文件中找到每个文件的方法。

我该怎么做?

这是当前代码:

            Column 
                anchors.centerIn: parent
                anchors.fill: parent
                ListView 
                    id: musicFolder
                    FolderListModel 
                        id: folderModel
                        folder: musicDir
                        showDirs: false
                        nameFilters: ["*.ogg","*.mp3","*.oga","*.wav"]
                    
                    width: parent.width
                    height: parent.height
                    model: folderModel
                    delegate: ListItem.Subtitled 
                        text: fileName
                        subText: "Artist: "
                        onClicked: 
                            console.debug('Debug: User pressed '+musicDir+fileName)
                            playMusic.source = musicDir+fileName
                            playMusic.play()
                            trackInfo.text = playMusic.metaData.albumArtist+" - "+playMusic.metaData.title // show track meta data
                        
                    
                
            

【问题讨论】:

我不确定 QtMultimedia,但在 Phonon 中,您必须先实际播放文件,然后才能提取元数据。要从文件夹中的所有文件中显式提取数据,您必须使用外部库,如 taglib.github.io QtMultimedia 中的行为是否也相同? 嗨,Amit,好吧,是的,在使用 QtMultimedia 提取元数据之前,我似乎必须先播放每个曲目。但是它消耗了大量的能量并且使应用程序非常慢,这就是为什么我想看看是否有其他选择可以代替这种方式。 【参考方案1】:

似乎最简单的方法是获取一个 C++ 库,该库可以从这些文件中解析元数据,并使用它在 C++ 中创建一个自定义 ListModel,将这些信息填充到自身上。不幸的是,这必须在 C++ 中完成,因为 javascript 没有读取和解析文件的 IO 功能。

【讨论】:

谢谢。如果是这样的话,我希望音乐应用程序的一些贡献者能帮助我。【参考方案2】:

实际上,我想我可能会继续使用 QtMultimedia,但将数据保存在本地数据库中。启动时,它会检查音乐目录并添加/删除曲目。这样它只会在第一次启动时很慢(希望如此)

【讨论】:

以上是关于使用 QML 从委托文件中获取元数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从 C# 中的文件中获取元数据? [复制]

Autodesk Forge 从转换后的 DWG 获取清单和元数据

使用 C# 从 ASP.Net MVC 中的视频文件中获取视频元数据的最佳方法是啥?

从带有 URL 的 mp3 文件中获取元数据(swift)

如何从 .mp3 文件中获取元数据并使用 FFmpeg 将其作为文本放入视频中?

如何从 URL 获取文件元数据