Я пытался воспроизводить видеоформаты * .wmv, * .mp4 с QMediaPlayer и QVideoWidget в Qt5.2. Я просто следовал expample и вот мой код:Воспроизведение видео с помощью QMediaPlayer, QVideoWidget в Qt5.2
mp =new QMediaPlayer(this);
vw = new QVideoWidget(this);
QMediaPlaylist* playlist = new QMediaPlaylist(this);
playlist->addMedia(QUrl::fromLocalFile("C:/Users/Public/Videos/Sample Videos/Wildlife.wmv"));
playlist->setCurrentIndex(1);
mp->setPlaylist(playlist);
mp->setVideoOutput(vw);
setGeometry(100,100,400,500);
vw->setGeometry(0,0,300,400);
show();
play();
Я установил кодеки K-Lite. Когда я воспроизвожу те же файлы с помощью Media Player Classic или Win Media Player, файлы воспроизводятся хорошо, а значки Lca и FFmpeg отображаются в лотке.
Но с Qt 5.2 Я не вижу визуальных эффектов для любого видеофайла. Только для файлов wmv я могу слышать звук (без визуального).
Я много искал в Интернете, и все указывают на кодеки, которые, я считаю, у меня есть. Какова конфигурация кодеков K-Lite? Я использовал кодеки по умолчанию. Я построил Qt с фондом Win Media. Поэтому я затрудняюсь понять, что здесь не так. Платформа - win7 32. Любая помощь приветствуется. Дайте мне знать, если мне нужно что-то читать или любую статью или блог. Спасибо.
Я сменил видеокарту на Nvidia GeForce 210, которая поддерживает OpenGL 3.3. Мой предыдущий поддерживал только OpenGl 1.1. Теперь я могу правильно воспроизводить все wmv-видео, но для любого другого формата я получаю следующую ошибку: DirectShowPlayerService :: doRender: Неразрешенный код ошибки 80040266. VFW_E_NO_TRANSPORT Пины не могут подключаться, потому что они не поддерживают один и тот же транспорт. Например, для восходящего фильтра может потребоваться интерфейс IAsyncReader, в то время как нисходящий фильтр требует IMemInputPin. Должен ли я создавать DirectShow или Qt5 после изменения видеокарты? – sky