在树莓派上播放音乐的方式有很多,最简单的是调用系统命令来播放,一般使用如下命令即可:

import os
os.system("player XXX.mp3")       #player指播放器,是你系统上可以播放音乐的软件

但是这种方式有一个问题,就是一旦开始播放便不好通过程序控制播放过程,因为这一命令会fork一个进程来运行命令,即使结束当前的命令也无法退出。那么,有没有其他方法可以控制播放的启停呢?当然!下面我们就来看看其他的播放音乐的方式:

使用pygame

from pygame import mixer  # Load the popular external library

mixer.init()
mixer.music.load('e:/LOCAL/Betrayer/Metalik Klinik1-Anak Sekolah.mp3')
mixer.music.play()

当然,在使用之前应该先安装pygame库:

pip3 install pygame         #Python3
pip install pygame          #Python2

这个库对于MP3文件的支持有限,其官网称在Debian系统下可能会崩溃,而树莓派官方系统就是在Debian的基础上制作的,因此不是很推荐这一方法。具体参考这一网址

使用vlc Python binding模块

在使用前需要安装python-vlc模块:

pip3 install python-vlc         #Python3
pip install python-vlc          #Python2

除此之外,还需要安装vlc播放器,因为这一模块运行需要vlc播放器的运行时库。vlc播放器可以使用如下命令安装(树莓派官方系统预装了这一软件,可以跳过):

sudo apt-get install vlc -y         #Debian, Ubuntu等支持apt-get命令的系统

此外,还要安装pulseaudio:

sudo apt-get install pulseaudio -y

准备就绪后可以使用如下代码播放音频:

import vlc
p = vlc.MediaPlayer("file:///path/to/track.mp3")
p.play()

使用如下代码停止播放:

p.stop()

可能遇到的问题:

[0a27ad50] vlcpulse audio output error: PulseAudio server connection failure: Connection refused
[0a351e20] vlcpulse audio output error: PulseAudio server connection failure: Connection refused

解决方法如下:

rm -r ~/.pulse
rm -r ~/.pulse-cookie
rm -r ~/.config/pulse
sudo pulseaudio -k
pulseaudio --start

总结

除了上述两种方法之外还有很多其他方法,例如使用pydub模块来读入数据并转成wav音频文件然后使用pygame播放(基于pygame对mp3文件的支持有限),或者在Jupyter notebook环境下使用IPython.display来播放。甚至于还可以使用webbrowser模块在网页上播放。方法很多,在这只选了pygame这一常用方法以及vlc这一好用的方法来做介绍。

安装过程遇到问题欢迎留言!

最后修改日期:2020年10月18日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。