使用VLC在单独的功能内播放/暂停音轨

时间:2019-01-23 20:45:04

标签: python python-2.7 vlc libvlc

我有一个函数(cmd_sr),可使用VLC-python lib播放音轨。

我的目标是具有不同的功能来暂停,停止,更改曲目等。但是,如果我尝试以其他功能暂停曲目,则没有任何变化。如果我将p.pause()添加到cmd_sr函数中,则效果很好。

是否可以将cmd_pause()函数嵌入到cmd_sr()中,或者以某种方式允许任何函数对其进行访问或暂停?

def cmd_sr(stream_url):
    global p
    p = vlc.MediaPlayer(stream_url)
    p.play()
def cmd_pause():
    print(stream_url)
    p = vlc.MediaPlayer(stream_url)
    sendMessage(s, "Tried to pause")
    p.pause()

1 个答案:

答案 0 :(得分:1)

我认为一旦创建MediaPlayer,就无需重新创建。

做到这一点的一种方法是:

# The player
p = None


def cmd_init(stream_url):
    global p
    p = vlc.MediaPlayer(stream_url)


def cmd_sr(stream_url):
    p.play()


def cmd_pause():
    sendMessage(s, "Tried to pause")
    p.pause()

但是,使用全局变量(此处为 p )不是很优雅。最佳做法是使用一个类:

class MyPlayer(object):
    def __init__(self, stream_url):
        self.player = vlc.MediaPlayer(stream_url)

    def play(self):
        self.player.play()

    def pause(self):
        sendMessage(s, "Tried to pause")
        self.player.pause()