0

cpp で MediaPlayer クラスを使用するカスケード プロジェクトがあります。metaDataChanged イベントを処理するハンドラ クラスを定義しましたが、ソース URL を設定して mediaPlayer.prepare() メソッドを呼び出すと、メタデータで何も取得されないため、単に空の QVariantMap になります。

興味深いのは、定義された metaDataChaned イベントのイベント ハンドラーが呼び出されないことです。

メタデータを取得できるようにここに追加できるものがあると思いますが、準備()メソッドは正常に機能するため、何が問題なのかわかりません

ここに私が試したコードがあります。

    bb::multimedia::MediaPlayer* mp = new bb::multimedia::MediaPlayer();
    mp->setSourceUrl(resultString);
    mp->prepare();
    MetaDataReader metaDataReader(mp);

とクラス

    MetaDataReader::MetaDataReader(bb::multimedia::MediaPlayer* mediaPlayer) : QObject(NULL)
    {
        connect(mediaPlayer, SIGNAL(metaDataChanged(const QVariantMap&)), this, SLOT(onMetaDataChanged(const QVariantMap&)));
    }

    void MetaDataReader::onMetaDataChanged(const QVariantMap& metaData)
    {
        someCode

            // It doesn't reach this SLOT
    }

ここでメタデータを取得するにはどうすればよいですか?

前もって感謝します

4

1 に答える 1

0

少し奇妙ですが、ファイルの再生を開始するまでメタデータを取得できない場合があります。再生を開始してみると、metaDataChangedすぐに信号が発せられるはずです。

于 2013-04-11T18:39:43.173 に答える