Vlc mediaplayer: установка громкости не работает, когда плеер остановленPython

Программы на Python
Anonymous
Vlc mediaplayer: установка громкости не работает, когда плеер остановлен

Сообщение Anonymous »

Я написал небольшую демо-версию медиаплеера VLC с 2 кнопками: воспроизведение и остановка
и 1 ползунком громкости.
Ползунок работает, когда плеер играет, т.е. громкость меняется в зависимости от настройку ползунка.
когда он остановлен и положение ползунка изменено, мне нужно нажать кнопку воспроизведения 2 раза, чтобы громкость изменилась в соответствии с новой настройкой ползунка. нажатие 1 раз сохраняет только предыдущую настройку громкости.
Вот код:

Код: Выделить всё

import vlc
from tkinter import *
from tkinter import ttk

volume_ini=50
url='http://direct.fipradio.fr/live/fip-midfi.aac'

instance=vlc.Instance('--input-repeat=-1','--fullscreen')
player=instance.media_player_new()
media=instance.media_new(url)
player.set_media(media)

root=Tk()
window_height=240
window_width=320
screen_width=root.winfo_screenwidth()
screen_height=root.winfo_screenheight()
x_cordinate = int((screen_width/2) - (window_width/2))
y_cordinate = int((screen_height/2) - (window_height/2))
root.geometry("{}x{}+{}+{}".format(window_width, window_height, x_cordinate, y_cordinate))

v1=DoubleVar()

def st():
player.stop()

def pl():
global player
global volume_ini
player.audio_set_volume(volume_ini)
player.play()

class BarVolume(ttk.Scale):
def __init__(self, master):
global v1
global volume_ini
ttk.Scale.__init__(self,master,
variable=v1,from_=0,to=100,orient=HORIZONTAL,length=80)
self.volume=volume_ini
self.bind("", self.updateValue)
self.set(volume_ini)

def updateValue(self, event):
global volume_ini
global v1
global player
volume_ini=int(v1.get())
self.volume=volume_ini
labelText.set(str(volume_ini))
player.audio_set_volume(self.volume)

#self.geometry("{}x{}+{}+{}".format(window_width, window_height, x_cordinate, y_cordinate))
content1 = ttk.Frame(root)
content1.grid(column=0, row=0)

led_1=ttk.Button(content1, text='play',command=lambda:pl(),width=20)
led_1.grid(column=0, row=0)
led_2=ttk.Button(content1, text='stop',command=lambda:st(),width=10)
led_2.grid(column=0, row=1)
labelText = StringVar()

lbl=ttk.Label(content1,textvariable=labelText,width=20)
lbl.grid(column=0, row=3)
echelle=BarVolume(content1)
echelle.grid(column=0, row=4)

root.mainloop()

player.stop()

Я пытался поиграть с глобальными и локальными переменными
Я также написал тот же код с классом, встраивающим все окно

Подробнее здесь: https://stackoverflow.com/questions/786 ... is-stopped

Вернуться в «Python»