2

当尝试通过 Python 绑定使用VLC 媒体播放器播放YouTube URL 时,视频实际上并没有播放。

这是我的播放代码:

    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 的页面内容的返回,但没有视频。

4

2 回答 2

3

那是因为您提供的链接不是视频的链接。VLC 媒体播放器可以获得 YouTube 视频的实际链接,但 libVLC 不会这样做。

于 2013-10-22T15:54:22.220 回答
1

我最近遇到了同样的问题,但 youtube.lua 文件似乎已经修复很久了。

感谢VLC 开发人员之一Rémi Denis-Courmont 的提示,我通过创建 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)
于 2015-04-03T11:00:02.137 回答