Проблема с модулем VLC - PullRequest
       37

Проблема с модулем VLC

0 голосов
/ 27 февраля 2019

Я пытаюсь сделать аудио-плеер, использующий python для небольшого проекта.Сценарий, который я использую, выглядит следующим образом:

#!/usr/bin/env python                                                                                                                          
import re                                                                                                                                      
import sys                                                                                                                                     
import pafy                                                                                                                                    
import vlc                                                                                                                                     

url = "https://www.youtube.com/watch?v=G0OqIkgZqlA"                                                                                            
video = pafy.new(url)                                                                                                                          
best = video.getbestaudio()                                                                                                                    
playurl = best.url                                                                                                                             
player = vlc.MediaPlayer(playurl)                                                                                                              
player.play()                                                                                                                                                                                                                                
while True: pass

Теперь этот сценарий отлично работает на моей рабочей машине под управлением manjaro и следующей версии python:

Python 3.7.2 (default, Jan 10 2019, 23:51:51)

Машина, которую я планируюзапустить этот скрипт - raspberry pi zero W, запустив raspbian stretch, и я настроил его на запуск этой версии python:

Python 3.5.3 (default, Sep 27 2018, 17:25:39) 

Когда я запускаю этот скрипт на raspberry pi, я ничего не получаю, а когда я его останавливаю, я получаюследующие сообщения:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/youtube_dl/extractor/__init__.py", line 4, in <module>
    from .lazy_extractors import *
ImportError: No module named 'youtube_dl.extractor.lazy_extractors'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "box.py", line 4, in <module>
    import pafy
  File "/usr/local/lib/python3.5/dist-packages/pafy/__init__.py", line 7, in <module>
    from .pafy import new
  File "/usr/local/lib/python3.5/dist-packages/pafy/pafy.py", line 48, in <module>
    import youtube_dl
  File "/usr/local/lib/python3.5/dist-packages/youtube_dl/__init__.py", line 43, in <module>
    from .extractor import gen_extractors, list_extractors
  File "/usr/local/lib/python3.5/dist-packages/youtube_dl/extractor/__init__.py", line 9, in <module>
    from .extractors import *
  File "/usr/local/lib/python3.5/dist-packages/youtube_dl/extractor/extractors.py", line 732, in <module>
    from .newgrounds import (
  File "<frozen importlib._bootstrap>", line 969, in _find_and_load
  File "<frozen importlib._bootstrap>", line 954, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 896, in _find_spec
  File "<frozen importlib._bootstrap_external>", line 1147, in find_spec
  File "<frozen importlib._bootstrap_external>", line 1121, in _get_spec
  File "<frozen importlib._bootstrap_external>", line 1229, in find_spec
  File "<frozen importlib._bootstrap_external>", line 82, in _path_stat
KeyboardInterrupt

Выполняя команды одну за другой, я думаю, что обнаружил проблему с vlc module.Когда сценарий достигает следующей команды:

player=vlc.MediaPlayer(playurl)

Я получаю:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'vlc' has no attribute 'MediaPlayer'

Для справки я использовал pip3 для установки модулей python-vlc, pafy и youtube_dl.

Это мой первый опыт работы с Python.Я получил это далеко, прочитав несколько постов здесь и на других сайтах.Это полностью смущает меня, и я понятия не имею, что нужно сделать, чтобы это работало.

Вполне возможно, что есть проблема с установкой python на raspbian (я использую совершенно новую установку, только прошлой ночьюЯ переустановил это снова!).Единственное, что я добавил к новой установке raspbian, - это обновил систему, установил git и несколько других программ.

Может кто-нибудь помочь мне?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Для простоты поместите программу vlc.py в тот же каталог, что и ваша программа.
Тогда это самый простой способ заставить vlc воспроизвести что-либо

url = "file:///home/rolf/GWPE.mp4"

import vlc

playing = set([1,2,3,4])
instance=vlc.Instance()
player=instance.media_player_new()
player.set_mrl(url)
player.play()
while True:
    state = player.get_state()
    if state not in playing:
        break

Не уверен, чтоpafy часть идет, но вышеприведенный будет воспроизводить локальный файл, и я подозреваю, что Pafy передает ему.

0 голосов
/ 27 февраля 2019

Ваша ошибка:

AttributeError: module 'vlc' has no attribute 'MediaPlayer'

Когда я запускаю приведенный ниже код:

import vlc
player = vlc.MediaPlayer()

, происходит сбой с ошибкой ниже:

AttributeError: module 'vlc' has no attribute 'MediaPlayer'

Это означает, что естьне является ни классом, ни функцией с именем 'MediaPlayer' в vlc.


РЕДАКТИРОВАТЬ:

Кажется, проблема связана с двумя версиями пакета vlc (32-разрядные против 64-разрядных).Есть также два способа установить его: python-vlc vs vlc.Пожалуйста, проверьте, была ли у вас версия системы, и установите правильную версию пакета для нее.Вы все еще можете столкнуться с той же проблемой, что и у меня, потому что мне не хватает некоторых DLL.

Надеюсь, что приведенные ниже ссылки помогут:

https://stackoverflow.com/questions/42045887/python-vlc-install-problems
https://stackoverflow.com/questions/42105208/error-when-importingpython-vlc
https://stackoverflow.com/questions/38265773/import-vlc-module-in-python
  1. pip install vlc -> не имеет класса MediaPlayer
  2. pip install python-vlc имеет класс MediaPlayer, нодает ошибку DLL библиотеки
...