MAC OS で Qt を使用し、メディアのメタデータを取得しようとしました。だから私はQtのメディアプレーヤーの例(Qt 5.8.0)を取り、少し修正しました:
それ以外の:
connect(controls, SIGNAL(play()), player, SLOT(play()));
私が使用した:
connect(controls, &PlayerControls::play, player,
[this]{
qDebug() << player->isMetaDataAvailable();
qDebug() << player->metaData(QMediaMetaData::Size);
player->play();
qDebug() << player->isMetaDataAvailable();
qDebug() << player->metaData(QMediaMetaData::Resolution);
});
結果は次のとおりです。
false
QVariant(Invalid)
false
QVariant(Invalid)
1 つ目の質問:メディアの再生が開始された後でもメタデータが利用できないのはなぜですか?
2 番目の質問:デストラクタにいくつかのコードを追加しました:
Player::~Player()
{
qDebug() << player->isMetaDataAvailable();
qDebug() << player->metaData(QMediaMetaData::Duration);
}
これでメタデータが利用可能になりましたが、データは返されません:
true
QVariant(Invalid)
誰でも私を助けてもらえますか?
更新の質問 1:
それ以外の
connect(controls, SIGNAL(pause()), player, SLOT(pause()));
私が使用した:
connect(controls, &PlayerControls::pause, player,
[this]{
qDebug() << player->isMetaDataAvailable();
qDebug() << player->metaData(QMediaMetaData::Resolution);
});
約 3 ~ 5 秒の再生後、メタデータは既に利用可能ですが、何も返されません。
true
QVariant(Invalid)