0

我有一个级联项目,我在 cpp 中使用 MediaPlayer 类。我已经定义了一个处理程序类,它处理 metaDataChanged 事件,但是当我设置源 url 并调用 mediaPlayer.prepare() 方法时,它不会检索元数据中的任何内容,因此它只是空的 QVariantMap。

有趣的是,甚至没有调用为 metaDataChaned 事件定义的事件处理程序。

我想我可以在这里添加一些东西来获取元数据,但是 prepare() 方法成功地工作了,所以我不知道有什么问题

这是我尝试过的一段代码。

    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 回答