Ошибка видеозаписи Phonon:“не удалось правильно инициализировать виджет видео”
Вопрос
Я задал этот вопрос в списке рассылки PyQt и не получил никаких ответов, так что я попытаю счастья здесь.
Я столкнулся с неприятной проблемой (только в Windows):при попытке создать экземпляр VideoWidget я получаю сообщение об ошибке "не удалось правильно инициализировать видео-виджет".Как ни странно, это только что всплыло в коде после нескольких недель безупречной работы в двух отдельных окнах Windows (одна Vista, другая - образ XP, запущенный через Parallels).Я не знаю о каких-либо изменениях в окружающей среде, которые могли бы стать причиной этого.
Я использую Python 2.6 и установщик PyQt 4.5.4 для Windows.Я замечаю, что этот вопрос был поднят в ноябре прошлого года, но никаких решений предложено не было:
http://www.riverbankcomputing.com/pipermail/pyqt/2008-November/021029.html
Мой поиск в Google не нашел никаких объяснений того, что может быть причиной этого.Кто-нибудь может подсказать мне?
Решение 2
Ненавижу отвечать на мой собственный вопрос, но если кто-нибудь еще столкнется с этим:
Решение этой проблемы оказалось зависящим от конкретного оборудования.У Phonon, похоже, проблемы с видеодрайверами для определенных виртуальных машин - Parallels в моем случае.Физическое оборудование не обнаруживает этой проблемы.Я не смог найти никакого обходного пути.
Другие советы
Код, который генерирует это сообщение, находится в 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;
}
Фильтр - это тип ComPointer<IBaseFilter>
и его конструктор выполняет следующий сбой вызова (вызов оператора возвращает m_t, который присвоен m_filter выше):
::CoCreateInstance(clsid, 0, CLSCTX_INPROC_SERVER, iid,
reinterpret_cast<void**>(&m_t));
Таким образом, происходит сбой при вызове Windows API.Вы могли бы изменить исходный код, чтобы узнать, каково возвращаемое значение CoCreateInstance, чтобы определить причину, но, похоже, это связано с изменением в вашей системе, и я не знаю, как помочь дальше.Удачи.