无法通过 QMediaPlayer 获取 .mp3 封面(空字符串)
Can't get .mp3 cover via QMediaPlayer (empty string)
我正在开发一个程序来播放来自 VK.com 社交网络的音乐。该项目即将完成,但有一个小细节:我想添加对音乐翻唱的支持。实际上,问题如下:我使用 QMediaPlayer 和 QMediaMetaData 来获取有关加载的 MP3 文件的信息。我可以毫无问题地获得每个标签,除了我需要的专辑封面标签。以下是在控制台中显示所有可用标签的示例代码:
void MainWindow::playerMetaDataChanged()
{
qDebug() << " ";
qDebug() << "AvailableMetaData:";
qDebug() << " ";
QStringList metaData = player->availableMetaData();
foreach (QString metaDataType, metaData) {
qDebug() << "Type of metadata: " + metaDataType;
qDebug() << player->metaData(metaDataType);
qDebug() << "---------------";
}
qDebug() << " ";
}
控制台输出如下:
AvailableMetaData:
"Type of metadata: AlbumArtist"
QVariant(QString, "Within Temptation")
---------------
"Type of metadata: Author"
QVariant(QString, "Daniel Gibson & Robert Westerholt")
---------------
"Type of metadata: MediaType"
QVariant(QString, "Symphonic Gothic Metal")
---------------
"Type of metadata: PosterUrl"
QVariant(QString, "")
---------------
"Type of metadata: Title"
QVariant(QString, "Empty Eyes (Bonus Track)")
---------------
如您所见,PosterUrl returns 是一个空字符串,尽管我的 mp3 文件包含专辑封面 - 我对此很确定。我试图获取一些其他元数据,例如:
qDebug()<< player->metaData(QMediaMetaData::PosterUrl);
qDebug()<< player->metaData(QMediaMetaData::PosterImage);
qDebug()<< player->metaData(QMediaMetaData::CoverArtImage);
qDebug()<< player->metaData(QMediaMetaData::CoverArtUrlSmall);
qDebug()<< player->metaData(QMediaMetaData::CoverArtUrlLarge);
qDebug()<< player->metaData(QMediaMetaData::CoverArtUrlLarge);
但每次我在控制台中收到 QVariant(Invalid) 或 QVariant(QString, "") 消息时。有解决该问题的想法吗?
您无法使用 QMediaPlayer
解决此问题。它对标签的支持有限。我刚才遇到了同样的问题。唯一的解决方案 - 使用 taglib 来实现标签工作。
我正在开发一个程序来播放来自 VK.com 社交网络的音乐。该项目即将完成,但有一个小细节:我想添加对音乐翻唱的支持。实际上,问题如下:我使用 QMediaPlayer 和 QMediaMetaData 来获取有关加载的 MP3 文件的信息。我可以毫无问题地获得每个标签,除了我需要的专辑封面标签。以下是在控制台中显示所有可用标签的示例代码:
void MainWindow::playerMetaDataChanged()
{
qDebug() << " ";
qDebug() << "AvailableMetaData:";
qDebug() << " ";
QStringList metaData = player->availableMetaData();
foreach (QString metaDataType, metaData) {
qDebug() << "Type of metadata: " + metaDataType;
qDebug() << player->metaData(metaDataType);
qDebug() << "---------------";
}
qDebug() << " ";
}
控制台输出如下:
AvailableMetaData:
"Type of metadata: AlbumArtist"
QVariant(QString, "Within Temptation")
---------------
"Type of metadata: Author"
QVariant(QString, "Daniel Gibson & Robert Westerholt")
---------------
"Type of metadata: MediaType"
QVariant(QString, "Symphonic Gothic Metal")
---------------
"Type of metadata: PosterUrl"
QVariant(QString, "")
---------------
"Type of metadata: Title"
QVariant(QString, "Empty Eyes (Bonus Track)")
---------------
如您所见,PosterUrl returns 是一个空字符串,尽管我的 mp3 文件包含专辑封面 - 我对此很确定。我试图获取一些其他元数据,例如:
qDebug()<< player->metaData(QMediaMetaData::PosterUrl);
qDebug()<< player->metaData(QMediaMetaData::PosterImage);
qDebug()<< player->metaData(QMediaMetaData::CoverArtImage);
qDebug()<< player->metaData(QMediaMetaData::CoverArtUrlSmall);
qDebug()<< player->metaData(QMediaMetaData::CoverArtUrlLarge);
qDebug()<< player->metaData(QMediaMetaData::CoverArtUrlLarge);
但每次我在控制台中收到 QVariant(Invalid) 或 QVariant(QString, "") 消息时。有解决该问题的想法吗?
您无法使用 QMediaPlayer
解决此问题。它对标签的支持有限。我刚才遇到了同样的问题。唯一的解决方案 - 使用 taglib 来实现标签工作。