VLC Python不播放YouTube视频
问题描述:
当试图通过Python绑定播放VLC media player的YouTube网址时,视频实际上并未播放。VLC Python不播放YouTube视频
这里是我的代码不会播放:
def play(self, mrl):
self.instance = vlc.Instance()
try:
self.media = self.instance.media_new_location(mrl)
except NameError:
print('NameError: %s (%s vs LibVLC %s)' % (sys.exc_info()[1],
vlc.__version__,
vlc.libvlc_get_version()))
self.player = self.instance.media_player_new()
self.player.set_media(self.media)
event_manager = self.player.event_manager()
event_manager.event_attach(vlc.EventType.MediaPlayerEndReached, self.end_callback)
self.player.play()
while self.stillPlaying:
#do nothing
pass
我这样称呼它:
play("http://www.youtube.com/watch?v=2hP-UGqA1Ek")
如果你使用VLC媒体播放器播放此类型的链接,它会'找到'视频并播放它。但是,我的代码发生的所有事情都是针对该页面的标准HTTP GET,并且是从YouTube返回页面内容,但没有视频。
答
这是因为您提供的链接不是视频的链接。 VLC媒体播放器可以获得到YouTube视频的实际链接,但libVLC不会这样做。
答
我最近有同样的问题,但是youtube.lua文件似乎已经被修复了很久。
感谢a tip from Rémi Denis-Courmont,其中一位VLC开发人员,我通过创建MediaListPlayer然后将媒体(本地文件或YouTube URL)添加到MediaList然后将其关联到播放器来解决此问题。我不知道为什么需要这样一种复杂的方法,但至少它对我有用。
#movie is the YouTube or a local URL
media = instance.media_new(movie)
media_list = instance.media_list_new([movie]) #A list of one movie
player = instance.media_player_new()
player.set_media(media)
#Create a new MediaListPlayer instance and associate the player and playlist with it
list_player = instance.media_list_player_new()
list_player.set_media_player(player)
list_player.set_media_list(media_list)
我认为问题在于VLC播放器使用youtube.lua脚本来查找视频的真实位置,然后将其传递给播放器。我只是需要自己做点什么。 – kobyashi 2012-07-12 15:54:23
这里是[固定VLC youtube.lua分析器](https://gist.github.com/boyvanamstel/3729932)在Github。 – Nawaz 2013-07-07 18:25:35