libvlc_media_player_set_hwnd不能与QWidget Handle一起使用

时间:2015-05-19 08:39:49

标签: qt libvlc

我正在使用Qt4.8 Windows版本来开发使用libvlc 2.2.1流式传输视频的应用程序。当我使用libvlc_media_player_set_hwnd()在我的QWidget上呈现视频时,它会创建一个单独的窗口来显示视频。

libvlc_media_player_set_hwnd(m_player, (void*)videoWidget->winId());

我已尝试过所有版本的libvlc以及与Qt相关的所有libvlc示例。还按照https://wiki.videolan.org/LibVLC_SampleCode_Qt/

中给出的步骤进行操作

但我不确定我是否遗漏了任何东西。 看起来好像libvlc_media_player_set_hwnd()无法获取QWidget WinId并创建自己的窗口。但是(void*)videoWidget->winId()的值似乎是有效的。 (我得到的值为0x65)。

如果我遗漏了任何东西,请告诉我。

1 个答案:

答案 0 :(得分:0)

您需要确保首先正确配置VLC实例,以便它使用虚拟接口,例如:

/* Load the VLC engine */
std::vector<const char*> options;
options.push_back("--intf=dummy");
return libvlc_new(int(options.size()), options.data());

此外,您确定要将句柄传递给正确的小部件进行渲染吗?此外,请确保在父窗口小部件上设置一些大小,否则您可能根本看不到任何渲染。最后,检查您为媒体播放器实例设置的媒体选项,可能会无意中告诉它渲染到生成的窗口。

我已经能够使用以下示例作为起点让VLC在我自己的Qt应用程序中工作,即使它适用于VLC 1.X:

LibVLC SampleCode Qt - VideoLAN Wiki