Повесьте приложение при остановке видео - Python + Kivy - PullRequest
0 голосов
/ 29 марта 2019

Я использую видео компонент Kivy для воспроизведения корпоративного видео на экране, и когда я его второй раз останавливаю, приложение зависает.

После отладки, чтобы попытаться решить проблемуЯ обнаружил, что они висят в video_gstplayer.py по адресу:

def seek(self, percent, precise=True):
    self.player.seek(percent)

Точно во втором предложении;и предыдущий происходит от video.py:

def on_state(self, instance, value):
    if not self._video:
        return
    if value == 'play':
        if self.eos:
            self._video.stop()
            self._video.position = 0.
            self._video.eos = False
        self.eos = False
        self._video.play()
    elif value == 'pause':
        self._video.pause()
    else:
        self._video.stop()
        self._video.position = 0
        self._video.eos = False

и точно соответствует последнему self._video.position = 0.

Мой код с использованием видео и виджета выглядит следующим образом:

class Presentation(Screen):

    def v_player(self):
        if App.get_running_app().play == 0:
            App.get_running_app().play = 1
            App.get_running_app().video = Video(source='data/video/video.mp4')
            App.get_running_app().video.state = 'play'
            App.get_running_app().video.allow_stretch = True
            self.add_widget(App.get_running_app().video)
        else:
            App.get_running_app().play = 1

    def go_inicio(self):
        if App.get_running_app().play == 1:
            App.get_running_app().play = 0
            App.get_running_app().video.state = 'stop'
            self.remove_widget(App.get_running_app().video)
            sm.current = 'inicio'
        else:
            App.get_running_app().play = 0
            sm.current = 'inicio'
    pass

Я прекращаю видео, нажимая кнопку «назад», которая вызывает функцию go_inicio.

Реализация класса App:

class GlomarkHome(App):
   slide_pro = 0
   slide_lit = 0
   play = 0
   video = 0

  def build(self):
     sm.add_widget(Inicio(name='inicio'))
     sm.add_widget(Categoria(name='categoria'))
     sm.add_widget(Presentation(name='presentation'))
     sm.add_widget(Productos(name='productos'))
     sm.add_widget(Obras(name='obras'))
     sm.add_widget(Pgrid(name='pgrid'))
     sm.add_widget(Pgrid_obras(name='pgrid_obras'))
     sm.add_widget(Product_1(name='product_1'))
     sm.add_widget(Product_2(name='product_2'))
   return sm
pass

Есть идеи?

Заранее спасибо

...