wx.MediaCtrl воспроизводит только аудио - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь воспроизвести видео с помощью 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 Ответ

0 голосов
/ 13 марта 2019

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

...