使用 VLC play/pause 单独函数内的音轨

Using VLC to play/pause an audio track inside of separate functions

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

我的目标是使用不同的功能来暂停、停止、更改曲目等。但是如果我尝试在不同的功能中暂停曲目,则不会有任何变化。如果我将 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()

我认为 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:

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()