我有一个级联项目,其中我在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
}如何获取这里的元数据?
提前感谢
发布于 2013-04-12 02:39:43
这有点奇怪,但在开始播放文件之前,您可能得不到元数据。尝试开始播放,您应该很快就会看到metaDataChanged信号被触发。
https://stackoverflow.com/questions/14777014
复制相似问题