VLC模块出现问题

问题描述 投票:1回答:2

我正在尝试使用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)

我计划运行这个脚本的机器是一个覆盆子pi零W运行raspbian拉伸,我设置它运行这个python版本:

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

当我在树莓派上运行这个脚本时,我什么也得不到,当我停止它时,我收到以下消息:

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。我从这里和其他网站上的几个帖子中读到了这一点。这完全让我感到困惑,我不知道如何使其发挥作用。

完全有可能在raspbian上安装python有问题(我使用的是全新的安装,只是昨晚我再次重新安装它!)。我添加到新的raspbian安装的唯一的事情是更新系统,安装git和一些其他程序。

有人可以帮帮我吗?

python vlc pafy
2个回答
1
投票

你的错误是:

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://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 lib错误

0
投票

为简单起见,将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传递给它。

© www.soinside.com 2019 - 2024. All rights reserved.