#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
, он выберет наиболее подходящий.