替换代码0】在分离的线程中开始播放音乐,所以在主线程中你可以运行其他代码--即你可以创建带有按钮的GUI来控制音乐,或者为这个音乐显示动画。但如果你不运行其他代码--比如
input()
,那么它就会结束脚本,并结束Python。- 那么它就会结束脚本,结束Python,并停止有音乐的线程。
你必须在主线程中运行一些代码来保持Python的运行,然后线程播放音乐。
甚至可以是
while True: pass
而不是
input()
。
在例子中,我用
p.is_playing()
来运行
while
的循环,直到它结束音乐。
import vlc
import time
p = vlc.MediaPlayer("music/song.mp3")
p.play()
print('is_playing:', p.is_playing()) # 0 = False
time.sleep(0.5) # sleep because it needs time to start playing
print('is_playing:', p.is_playing()) # 1 = True
while p.is_playing():
time.sleep(0.5) # sleep to use less CPU
在Python shell中,你一直在运行Python,所以它可以一直随着音乐运行线程。
EDIT:
例子中使用tkinter来显示带有按钮Exit的窗口。因为窗口是一直显示的,所以分离的线程可以一直播放音乐。
import vlc
import tkinter as tk
p = vlc.MediaPlayer("music/song.mp3")
p.play()
def on_click():
p.stop() # stop music
root.destroy() # close tkinter window
root = tk.Tk()
button = tk.Button(root, text="Exit", command=on_click)
button.pack()
root.mainloop()
使用tkinter你可以建立播放器。