首页 > 解决方案 > 使用 VLC 在单独的函数中播放/暂停音轨

问题描述

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

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

标签: pythonpython-2.7vlclibvlc

解决方案


我认为您不需要在创建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()

推荐阅读