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)")
---------------
ご覧のとおり、私の mp3 ファイルにはアルバム アートが含まれていますが、PosterUrl は空の文字列を返します。たとえば、次のような他のメタデータを取得しようとしていました。
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, "")メッセージを受け取るたびに。その問題を解決するためのアイデアはありますか?