如何获取 QMediaPlaylist 中所有媒体的元数据?

How to get metadata of all media in QMediaPlaylist?

我正在开发一个实现媒体播放器的 Ubuntu qt 项目。由于 QMediaObject::metaData 只能获取当前媒体的元数据,我想知道是否有办法获取我在 QMediaPlaylist 中添加的所有歌曲的元数据以添加到 table。感谢任何帮助。

Qt Multimedia 只支持查询当前歌曲的元数据。一种可能是一次加载所有歌曲,当状态为 QMediaPlayer::LoadedMedia(连接到 mediaStatusChanged() 信号)和 isMetaDataAvailable() returns 为真时查询元数据,然后关闭媒体并移至下一个。

如果你想事先拥有所有音频文件的元数据,你需要使用一些其他的库或框架来扫描媒体文件并为你创建一个 "metadata database",然后你在显示所有音频文件的列表时使用它歌曲。

一个可能的解决方案是编写一个 Python 脚本,该脚本使用 Mutagen 模块来检索元数据。它支持 ASF、FLAC、MP4、Monkey’s Audio、MP3、Musepack、Ogg Opus、Ogg FLAC、Ogg Speex、Ogg Theora、Ogg Vorbis、True Audio、WavPack、OptimFROG 和 AIFF 音频文件。支持ID3v2所有版本,解析所有标准ID3v2.4帧

您可以google寻求帮助来编写脚本,例如如何使用 Python 和 Mutagen 访问这些 ID3 值 Accessing mp3 Meta-Data with Python

当您将一首新歌曲添加到播放列表时,您可以通过 QMediaPlayer 加载歌曲以查询其元数据,或者启动一个查询元数据并添加到 "metadata database".

的脚本