0

我正在为 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
                        }
                    }
                }
            }
4

2 回答 2

0

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

于 2013-05-14T00:21:03.883 回答
0

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

于 2013-05-13T20:59:10.583 回答