Использование VLC для воспроизведения / паузы звуковой дорожки внутри отдельных функций - PullRequest
0 голосов
/ 23 января 2019

У меня есть одна функция (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 голосов
/ 24 января 2019

Я думаю, что вам не нужно заново создавать 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()
...