Проблема с модулем VLC
Я пытаюсь сделать аудио-плеер, использующий 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)
Машина, на которой я планирую запустить этот скрипт, является малиновой пи нулевой W, на которой выполняется растяжка, и я настроил ее для запуска этой версии 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 ответа
Ваша ошибка:
AttributeError: module 'vlc' has no attribute 'MediaPlayer'
Когда я запускаю код ниже:
import vlc
player = vlc.MediaPlayer()
это терпит неудачу с ошибкой ниже:
AttributeError: module 'vlc' has no attribute 'MediaPlayer'
Это означает, что в vlc нет ни класса, ни функции с именем MediaPlayer.
РЕДАКТИРОВАТЬ:
Эта проблема, по-видимому, связана с двумя версиями пакета vlc (32-битная или 64-битная). Есть также два способа установить его: python-vlc vs vlc. Пожалуйста, проверьте, была ли у вас версия системы, и установите правильную версию пакета для нее. Вы все еще можете столкнуться с той же проблемой, что и у меня, потому что мне не хватает некоторых DLL.
Надеюсь ниже ссылки помогут:
https://stackru.com/questions/42045887/python-vlc-install-problems
https://stackru.com/questions/42105208/error-when-importingpython-vlc
https://stackru.com/questions/38265773/import-vlc-module-in-python
- pip install vlc -> не имеет класса MediaPlayer
- pip install python-vlc имеет класс MediaPlayer, но выдает ошибку lib dll
Для простоты разместите 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 проходит к нему.