Phonon VideoWidget 错误:“视频小部件无法正确初始化”

0 投票
2 回答
704 浏览
提问于 2025-04-15 13:40

我在PyQt的邮件列表上问过这个问题,但没有人回复,所以我想在这里试试运气。

我遇到了一个让人头疼的问题(仅限Windows):当我尝试创建一个VideoWidget实例时,出现了错误信息“视频小部件无法正确初始化”。奇怪的是,这个问题在代码运行了几个星期后突然出现了,而且是在两台不同的Windows电脑上(一台是Vista,另一台是通过Parallels运行的XP)。我并不知道环境中有什么变化可能导致这个问题。

我使用的是Python 2.6和PyQt 4.5.4的Windows安装包。我注意到去年11月也有人提到过这个问题,但没有提供解决方案:

http://www.riverbankcomputing.com/pipermail/pyqt/2008-November/021029.html

我在网上搜索也没有找到可能导致这个问题的解释。有没有人能给我一些线索?

2 个回答

3

生成这个消息的代码在 3rdparty/phonon/ds9/videorenderer_vmr9.cpp 文件里:

m_filter = Filter(CLSID_VideoMixingRenderer9, IID_IBaseFilter);
if (!m_filter) {
    qWarning("the video widget could not be initialized correctly");
    return;
 }

这里的 Filter 是一种叫 ComPointer<IBaseFilter> 的类型,它的构造函数里有一个调用失败的操作(这个操作返回的 m_t 被赋值给上面的 m_filter):

::CoCreateInstance(clsid, 0, CLSCTX_INPROC_SERVER, iid,
                reinterpret_cast<void**>(&m_t));

所以,这个问题出现在一个 Windows API 的调用上。你可以修改源代码,看看 CoCreateInstance 的返回值是什么,以便找出问题的原因,但看起来这个问题和你系统上的某些变化有关,我也不知道该怎么进一步帮助你。祝你好运。

0

虽然不太想自己回答自己的问题,但如果其他人遇到类似情况,可以参考一下:

这个问题的解决办法其实跟硬件有关。Phonon在某些虚拟机的显卡驱动上似乎有问题——我这边是用的Parallels。真实的硬件上没有这个问题。我找不到什么解决办法。

撰写回答