Не удается получить медиафайл для воспроизведения в wxpython - PullRequest
0 голосов
/ 16 апреля 2020

Я просто хочу добавить простое видео в свое приложение, и я не могу заставить работать wx.media.MediaCtrl. Кажется, что когда я вызываю Load (), происходит сбой, я проверил, что путь существует.

import wx
import wx.media

class TestPanel(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None)
        self.testMedia = wx.media.MediaCtrl(self, style=wx.SIMPLE_BORDER, szBackend=wx.media.MEDIABACKEND_QUICKTIME)
        self.media = '/Users/nicholasmaisel/Downloads/test.mp4'
        self.testMedia.Bind(wx.media.EVT_MEDIA_LOADED, self.play)
        self.testMedia.Bind(wx.media.EVT_MEDIA_FINISHED, self.quit)
        print(self.testMedia.Load('/Users/nicholasmaisel/Downloads/test.mp4'))
        if self.testMedia.Load(self.media):
            pass
            print("loaded")
        else:
            self.testMedia.Play()
            wx.media.MediaCtrl()

            print("Media not found")
            self.quit(None)

    def play(self, event):
        self.testMedia.Play()

    def quit(self, event):
        self.Destroy()

if __name__ == '__main__':
    app = wx.App()
    Frame = TestPanel()
    Frame.Show()
    app.MainLoop()

Я просто хочу добавить простое видео на панель в wx. python, если кто-то может помочь, это будет очень признательно.

Спасибо

1 Ответ

0 голосов
/ 16 апреля 2020

Я предлагаю вам проверить, что вы можете воспроизвести медиа-файл с чем-то еще, прежде чем начать. Это звучит очевидно, но это может сэкономить нелепое количество потраченного времени.
Вот ваш собственный код, немного адаптированный, чтобы я мог сделать снимок экрана.
Дайте нам знать, если он все еще приносит вам горе, после запуска с действительным, проверенным видео.

import wx
import wx.media

class TestPanel(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, title='Media Player')
        self.testMedia = wx.media.MediaCtrl(self, style=wx.SIMPLE_BORDER)
        self.media = '/home/rolf/27343023_69.mp4'
        self.testMedia.Bind(wx.media.EVT_MEDIA_LOADED, self.play)
        self.testMedia.Bind(wx.media.EVT_MEDIA_FINISHED, self.quit)
        self.Bind(wx.media.EVT_MEDIA_STOP, self.OnMediaStop, self.testMedia)
        self.Bind(wx.EVT_CLOSE, self.quit)
        if self.testMedia.Load(self.media):
            pass
        else:
            print("Media not found")
            self.quit(None)
        self.Show()

    def play(self, event):
        self.testMedia.Play()

    def quit(self, event):
        self.testMedia.Stop()
        self.Destroy()

    # Sets the mp4 file in a loop for testing only
    def OnMediaStop(self, event):
        self.testMedia.Seek(0)
        event.Veto()

if __name__ == '__main__':
    app = wx.App()
    Frame = TestPanel()
    app.MainLoop()

enter image description here

...