Будучи запущенным в проекте wxpython, libvlc воспроизводит медиа в отдельном окне. - PullRequest
0 голосов
/ 14 апреля 2019

Я играю с примером кода 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?

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

1 Ответ

1 голос
/ 14 апреля 2019

Rubberducked ответ :) Для Windows должен использоваться вызов API set_hwnd, а не set_xwindow (что для систем X11)

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

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

...