libvlc_media_player_set_hwnd не работает с QWidget Handle

Я использую версию Qt4.8 для Windows для разработки приложения для потоковой передачи видео с использованием libvlc 2.2.1. Когда я использую libvlc_media_player_set_hwnd() для рендеринга видео на моем QWidget, это скорее создание отдельного окна для отображения видео.

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

Я пробовал все версии libvlc и все примеры, связанные с libvlc с Qt. Также выполните действия, указанные в https://wiki.videolan.org/LibVLC_SampleCode_Qt/

Но я не уверен, что я что-то упускаю. Похоже, что libvlc_media_player_set_hwnd() не может взять WinId QWidget и создать собственное окно. Однако значение (void*)videoWidget->winId() кажется допустимым. (Я получил значение 0x65).

Пожалуйста, дайте мне знать, если я что-то упустил.


person elTech    schedule 19.05.2015    source источник


Ответы (1)


Сначала вам нужно убедиться, что вы правильно настраиваете свой экземпляр 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

person bossbarber    schedule 07.07.2015