我有一个函数(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()
答案 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()