wx.MediaCtrl воспроизводит только аудио

#python-3.x #wxpython #media-player

#python-3.x #wxpython #медиаплеер

Вопрос:

Я пытаюсь воспроизвести видео, используя wx.MediaCtrl. Когда я запускаю свой код, видео не воспроизводится, воспроизводится только аудио. Я пробовал использовать разные видео и форматы файлов, но проблема не устранена.

Вот мой код:

 import wx
import wx.media

class Video(wx.Panel):
    def __init__(self, parent, id):
        wx.Panel.__init__(self, parent, id)
        self.Media = wx.media.MediaCtrl(self, style=wx.SIMPLE_BORDER, szBackend=wx.media.MEDIABACKEND_QUICKTIME)
        videoPath = "/Users/sherylhsu/Documents/sadf.mp4"
        self.Media.Load(videoPath)
        self.Media.Play()


app = wx.App(redirect=False)
mainFrame = wx.Frame(None, title="Temp")

video = Video(mainFrame, wx.ID_ANY)

mainFrame.Show()

app.MainLoop()
  

Спасибо за всю вашу помощь!

Ответ №1:

Вы показываете mainFrame , поэтому видео не отображается.
Самый простой способ заставить это работать — создать Video фрейм:

 import wx
import wx.media

class Video(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id)
        self.Media = wx.media.MediaCtrl(self, style=wx.SIMPLE_BORDER)
        videoPath = "/Users/sherylhsu/Documents/sadf.mp4"
        self.Media.Load(videoPath)
        self.Media.Play()
        self.Show()

app = wx.App(redirect=False)
video = Video(None, wx.ID_ANY)
app.MainLoop()
  

или, сохранив существующий код, просто переместите его Show в Video класс.

 import wx
import wx.media

class Video(wx.Panel):
    def __init__(self, parent, id):
        wx.Panel.__init__(self, parent, id)
        self.Media = wx.media.MediaCtrl(self, style=wx.SIMPLE_BORDER)
        videoPath = "/Users/sherylhsu/Documents/sadf.mp4"
        self.Media.Load(videoPath)
        self.Media.Play()
        self.Show()

app = wx.App(redirect=False)
mainFrame = wx.Frame(None, title="Temp")
video = Video(mainFrame, wx.ID_ANY)
app.MainLoop()
  

Примечание: если вы не укажете MediaCtrl a backend , он выберет наиболее подходящий.