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