我正在尝试制作一个简单的脚本,它将在python中播放视频(.mp4)。我不想播放你的视频或任何在线视频,只是我电脑上的视频。
这是我的代码:
import vlc
Instance = vlc.Instance()
player = Instance.media_player_new()
Media = Instance.media_new('test.mp4')
Media.get_mrl()
player.set_media(Media)
player.play()
当我运行它时,我一直收到这个错误(谈论第3行):
AttributeError:'NoneType'对象没有属性'media_player_new'
我在macOS Sierra的IDLE中使用python 3.5.4。
我通过在vlc.py中注释掉find_lib()解决了这个问题。
p = os.getcwd()
os.chdir(os.path.join(p, 'sdk'))
dll = ctypes.CDLL("libvlc.dll")
plugin_path = os.path.join(os.getcwd(), r'sdk\plugins')
您没有打开实例
import vlc
Instance = vlc.Instance()
player = Instance.media_player_new()
Media = Instance.media_new('2005.mp3')
Media.get_mrl()
player.set_media(Media)
player.play()
while player.get_state() !=6:
continue
应该工作还是 试试这个:
import vlc
import time
import sys
def progressbar(progress,guage_length=50):
div = 100 / float(guage_length)
prog = int(progress / div) # ensure progress fits in guage
text = "\rPlaying: {0}{1}{2} [{3}%]".format(">"*prog,"|","-"*(guage_length - prog),format(progress,'.2f'))
sys.stdout.write(text)
sys.stdout.flush()
instance = vlc.Instance()
player = instance.media_player_new()
player.set_mrl("V2.mp4")
player.play()
playing = set([1,2,3,4])
play=True
guage_length=30
while play == True:
time.sleep(0.5)
play_state = player.get_state()
if play_state in playing:
length = player.get_length()
ptime = player.get_time()
progress = ptime/float(length)*100
progressbar(progress,guage_length)
continue
else:
progressbar(100,guage_length)
play = False
print ("\nPlay terminated")
注意#State 0:None,1 Opening,2 Buffering,3 Playing,4 Paused,5 Stopped,6 End,7 Error
警告:仅在Linux上测试过
您可以简单地简化代码
import vlc
p = vlc.MediaPlayer('2005.mp3')
p.play()
但这不会解决你的问题。显然,未正确创建vlc实例。这可能是由各种问题引起的。使用
i = vlc.Instance('--verbose 3')
查看可能的错误消息。