我一整天都在尝试在我的 QT 项目中显示带有 VLC 的视频。
如果我不使用该线路,则该视频有效libvlc_media_player_set_hwnd
。如果没有这条线,VLC 会自动生成一个窗口。非常重要的是,我可以选择自己的窗口或子窗口区域来显示视频。
错误是:
main vout display error: Failed to set on top
我使用不同的 QT 类来显示视频。QVideoWidget、QWidget、QFrame 和 QMainWindow。它没有改变任何东西。(操作系统是windows)
互联网上有很多不同的解决方案。我想它应该适用于下面的代码。
我也尝试了不同版本的 libvlc,但错误总是一样的。
播放()方法:
void MainWindow::play()
{
libvlc_instance_t * inst;
libvlc_media_player_t *mp;
libvlc_media_t *m;
/* Load the VLC engine */
inst = libvlc_new (0, NULL);
if(!inst)
std::cout << "Can't load video player plugins" << std::endl;
m = libvlc_media_new_path (inst, "content.avi");
/* Create a media player playing environment */
mp = libvlc_media_player_new_from_media (m);
HWND windowID = reinterpret_cast<HWND>(this->winId());
/* It works without this line */
libvlc_media_player_set_hwnd(mp, windowID);
/* play the media_player */
libvlc_media_player_play (mp);
Sleep(uint(10000)); /* Let it play a bit */
/* Stop playing */
libvlc_media_player_stop (mp);
/* Free the media_player */
libvlc_media_player_release (mp);
libvlc_release (inst);
}
主.cpp:
QApplication a(argc, argv);
MainWindow w;
w.show();
w.play();
return a.exec();
提前感谢您提供有用的信息。
达里安