1

我想做一个音乐播放器,我正在通过 vlc 模块播放音频文件。我用这段代码来播放文件:

import vlc

p = vlc.MediaPlayer("music/song.mp3")
p.play()

在 python shell 中,它工作正常并播放文件。如果我尝试使用一个文件并运行它,它就会退出而不播放任何东西。

4

1 回答 1

4

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()

于 2021-02-07T01:01:47.220 回答