无法通过QMediaPlayer获取.mp3封面(空字符串)

时间:2016-05-09 05:27:16

标签: qt qmediaplayer

我正在开发一个从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返回一个空字符串,虽然我的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(无效) QVariant(QString,“”)消息。有什么想法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

您无法使用QMediaPlayer解决此问题。它有限的标签支持。我刚才有同样的问题。唯一的解决方案 - 使用taglib来实现使用标记。