Будучи запущенным в рамках проекта wxpython, libvlc воспроизводит мультимедиа в отдельном окне

#python #wxpython #libvlc

#python #wxpython #libvlc

Вопрос:

Я играю с примером кода vlc-python для видеоплеера на основе WX отсюда

Операционная система — Windows 10

Все работает гладко, за исключением того, что мультимедиа воспроизводится в отдельном окне, созданном непосредственно перед началом воспроизведения.

Я создал экземпляр проигрывателя с помощью этого кода:

 self.videopanel = wx.Panel(self, -1)
...
self.Instance = vlc.Instance('--verbose 3')
self.player = self.Instance.media_player_new()
self.player.set_xwindow(self.videopanel.GetHandle())

 

и получил следующие строки отладки, связанные с материалом ‘vout’:

 ... [skipped]
[000000000855a530] main window debug: looking for vout window module matching "embed-xid,any": 3 candidates
... [skipped]
[000000000855a530] main window debug: no vout window modules matched
... [skipped]
[00000000085aa8c0] main vout display debug: looking for vout display module matching "any": 12 candidates
... [skipped]
[00000000085aa8c0] main vout display debug: using vout display module "direct3d11"
 

Кто-нибудь может дать мне подсказку о том, как заставить libvlc использовать окно WX media?

Большое спасибо!

Ответ №1:

Rubber отказался от ответа 🙂 Для Windows set_hwnd следует использовать вызов API, а не set_xwindow (что для систем X11)

 if os.name == 'nt':
    self.player.set_hwnd(self.videopanel.GetHandle())
else:
    self.player.set_xwindow(self.videopanel.GetHandle())
 

Спасибо всем!