【问题标题】:Get meta data from delegated files using QML使用 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 提取元数据之前,我似乎必须先播放每个曲目。但是它消耗了大量的能量并且使应用程序非常慢,这就是为什么我想看看是否有其他选择可以代替这种方式。

标签: file qt metadata qml


【解决方案1】:

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

【讨论】:

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

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

【讨论】:

    猜你喜欢
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 2017-01-21
    • 2013-11-03
    • 2022-11-16
    • 2020-12-04
    相关资源
    最近更新 更多