我有一个级联项目,我在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
}
如何在此处获取元数据?
提前致谢
答案 0 :(得分:0)
这有点奇怪,但在开始播放文件之前,您可能无法获取元数据。尝试开始播放,您应该会看到metaDataChanged
信号在不久之后被触发。