我正在使用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
}
}
}
}
答案 0 :(得分:0)
这里最简单的事情似乎是获得一个C ++库,它可以解析这些文件中的元数据并使用它在C ++中创建一个自定义ListModel,将这些信息填充到自身。不幸的是,这必须在C ++中完成,因为javascript没有读取和解析文件的IO功能。
答案 1 :(得分:0)
实际上我认为我可以继续使用QtMultimedia,但将数据保存在本地数据库中。启动时,它会检查音乐目录并添加/删除曲目。这样,它首次启动时只会很慢(希望如此)