我想做一个音乐播放器,我正在通过 vlc 模块播放音频文件。我用这段代码来播放文件:
import vlc
p = vlc.MediaPlayer("music/song.mp3")
p.play()
在 python shell 中,它工作正常并播放文件。如果我尝试使用一个文件并运行它,它就会退出而不播放任何东西。
我想做一个音乐播放器,我正在通过 vlc 模块播放音频文件。我用这段代码来播放文件:
import vlc
p = vlc.MediaPlayer("music/song.mp3")
p.play()
在 python shell 中,它工作正常并播放文件。如果我尝试使用一个文件并运行它,它就会退出而不播放任何东西。
play()
开始在单独的线程中播放音乐,因此在主线程中您可以运行其他代码 - 即。您可以创建带有按钮的 GUI 来控制音乐,或显示此音乐的动画。但是如果你不运行其他代码——比如input()
——那么它会结束脚本并结束 Python 并且它会停止带有音乐的线程。
您必须在主线程中运行一些代码才能继续运行 Python,然后播放音乐。
它甚至可以while True: pass
代替input()
.
在示例中,我使用-loopp.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
的情况下,它可以一直运行与音乐的线程。
编辑:
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
您可以构建播放器。
vlc
有几个更复杂的示例如何vlc
与不同的 GUI一起使用
https://git.videolan.org/?p=vlc/bindings/python.git;a=tree;f=examples;hb=HEAD
我在MediaPlayer的文档中找到的函数is_playing()