2015-03-03 2 views
1

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

  1. Во-первых, Kivy показывал ошибку на Pyglet и ff_mpeg. Поэтому я установил Pyglet, который, следовательно, требует AVbin, - ни один из которых не будет загружаться автоматически.

  2. Я нашел следующее решение на другой пост - который зафиксировал звук:

    import pyglet 
    pyglet.lib.load_library('avbin') 
    pyglet.have_avbin=True 
    
  3. Могу ли я сделать то же самое с ff_mpeg? Можно ли его загрузить вручную?

  4. Я уже установил ffmpeg:

    • Когда я типа ffmpeg -version на ЦМД - он отображает FFmpeg версия N -.... построен с GCC 4.9.2 (GCC). Кроме того, я добавил все пути в WIndows.
  5. Также мой pip list:

    Cython (0.21.2) 
    docutils (0.12) 
    ffmpegwrapper (0.1.dev0) 
    Kivy (1.8.0) 
    Kivy-Garden (0.1.1) 
    Pillow (2.1.0) 
    pip (6.0.8) 
    pygame (1.9.2a0) 
    pyglet (1.2.1) 
    requests (2.5.1) 
    setuptools (12.0.5) 
    
  6. Ошибка на Kivy:

    [DEBUG  ] [Video  ] Ignored <ffmpeg> (import error) 
    [INFO  ] [Video  ] Provider: pyglet(['video_ffmpeg'] ignored) 
    

    и

    File "C:\Python33\lib\site-packages\kivy\core\video\video_pyglet.py", line 67, in _update 
        self._player.dispatch_events(dt) 
    AttributeError: 'Player' object has no attribute 'dispatch_events' 
    
  7. И, наконец, вот код - я работаю с:

    import kivy 
    import pyglet 
    pyglet.lib.load_library('avbin') 
    pyglet.have_avbin=True 
    
    kivy.require('1.8.0') 
    
    from sys import argv 
    from os.path import dirname, join 
    from kivy.app import App 
    from kivy.uix.videoplayer import VideoPlayer 
    
    class VideoPlayerApp(App): 
    
        def build(self): 
         if len(argv) > 1: 
          filename = argv[1] 
         else: 
          curdir = dirname(__file__) 
          filename = join(curdir, 'project.mp4') 
         return VideoPlayer(source=filename, state='play') 
    
    if __name__ == '__main__': 
        VideoPlayerApp().run() 
    

Я искал много других потоков, и установлены FFmpeg несколько раз не повезло. Любая помощь будет принята с благодарностью. Спасибо!

ответ

1

Поставщик «ffmpeg» не использует установленный ffmpeg. Прочитайте заголовок бэкэнда по адресу: https://github.com/kivy/kivy/blob/master/kivy/core/video/video_ffmpeg.py

Что касается пиглета, если он не работает, мы не можем ему помочь, это больше касается самой установки пиглета.

Наш интегрированный плеер основан на GStreamer, который является лучшим выбором для рабочего стола (с именем gstplayer).

Для возобновления:

  • На рабочем столе, используйте наши пакеты и gstplayer на основе бэкенд будет использоваться.
  • На iOS создайте инструментальную цепочку с помощью ffpyplayer, и у вас будет доступный плеер на основе ffmpeg.
  • На Android, создайте toolchain с помощью ffmpeg, и у вас будет плеер на основе ffmpeg.
+0

«На рабочем столе, используйте наши пакеты и бэкэнд на основе gstplayer.'- Можете ли вы добавить несколько шагов для этого - я все еще очень новичок в этом. Я установил пакет ff_mpeg несколько раз - и, как вы сказали, Киви не узнает его. Огромное спасибо. –

Смежные вопросы