使用树莓派打造一个音乐播放器

时间:2024-02-17 13:37:21

买了个树莓派3B+,装好系统后灰落了好厚一层都不知道要干嘛。。。最近突发奇想:用树莓派做一个音乐播放器,每天6:30-7:20自动播放英语听力,强迫自己练习英语,也治治自己的懒床习惯,平时也可以用来听听歌。

准备工作:

1.树莓派一个,并且己安装好linux系统,并且己安装好Python3环境;

2.音箱一个(AUX有线接口或蓝牙音箱都行),连接到树莓派上;

软件环境搭建:

mtool是一个用python写的音乐播放器,在gitee和github上开源,主要用命令行进行控制,这个很适合我们这个需求。

下载地址:https://gitee.com/shadowlesswalker/mtool.git

首先我们在电脑上用ssh工具(我用的putty)登陆到树莓派,不会的可以另行百度树莓派ssh教程。输入以下命令:

cd /usr

git clone https://gitee.com/shadowlesswalker/mtool.git   mtool   #下载mtool源代码

cd mtool

ln -s -f  /usr/mtool/mtoolctl   /usr/bin/mtool   #创建软链接(快捷方式)

然后安装mtool依赖包:pygame,configparser(有的话就不用安装了)

sudo apt install python3-pygame

pip3 install configparser

至此,mtool就算安装完成了。mtool是一个C/S(服务器/客户端)模式的程序,服务器开启后会监听UDP端口(默认为127.0.0.1:6666),然后接受来自客户端的命令去控制播放。

我再来设置一下服务器端的开机自启动:

vim ~/.bashrc

在最后面添加命令:

nohup mtool --server start > /usr/mtool/log &        #其中nohup与&用于后台运行程序

配置音乐文件夹路径

先来配置一下音乐文件夹的位置,打开/usr/mtool/mtool.conf,在里面自行修改:

[player]         #这个节设置播放器参数

list = music      #设置默认的播放列表,列表名必须在后面的playlists节中出现

volume = 0.2    #默认音量

port = 6666      #默认UDP端口,用于服务器接受命令

index = 2        #当前播放位置

next = next     #默认播放模式:next|loop|random 对应顺序播放|单曲循环|随机播放

[playlists]       #播放列表预设节,可设置多个,格式为:列表名=文件夹路径

music = music        #播放列表名为music,路径为./music

en-listen = /var/share/en-listen    #我的英语听力资源文件的路径

开始使用mtool命令

source  ~/.bashrc

nohup mtool --server start > /usr/mtool/log &

#先手动启动服务端,虽然前面配置了开机自启动,但也只能下次开机才能生效

mtool -c info   #查看服务器状态,可用来测试服务器是否己启动,成攻类似如下显示:


 


mtool -c play  #播放

mtool -c vol=0.5   #设置音量

mtool -c lists  #查看可用的播放列表

mtool -c list     #列出当前播放列表中的音乐文件

mtool -c next=random|next|loop   #设置播放顺序

mtool -c playf=zui      #切换为单曲循环(next=loop),并且播放文件名中包含zui的文件

基本的用法就这样了,我们可以通过在电脑上控制树莓派播放音乐了,但是电脑老开着也不好,况且躺在床上怎么办呢?我们可以在手机上安装ssh工具,比如JuiceSSH(推荐),阿里云app。

设置树莓派定时播放

我们使用linux内置的计划任务命令crontab来设置定时播放功能。

说到定时任务,那我们首先得确认自己树莓派的时间是准确的。嘿嘿嘿。。。可惜,树莓派的时间一般都是不准确的。。。因为一般电脑在断电后时钟会由CMOS电池供电继续跑,但是树莓派断电后时间就会丢失。即然时间都不准确,又怎么能正常执行定时任务呢。。。

所以我们首先解决时间问题-NTP(网络时间同步)

dpkg-reconfigure tzdata    #时区设置,配置文件在/etc/timezone,设置为中国上海时区

date    #查看时间,确保我们的时区为中国时区

开启NTP服务

apt install ntp

ntpdate ntp.ntsc.ac.cn       #同步中国国家授时中心新(NTP服务器ntp.ntsc.ac.cn)

或者在/etc/ntp.conf中添加ntp服务器地址

重启ntp服务:

systemctl enable ntp    #ntp开机自启动

systemctl start ntp      #启动ntp服务

date    #查看系统时间,应该正确了

再来设置定时任务:

先写一个切换播放列表、改变音量、开时播放的脚本,用来被定时任务调用:

vim  /usr/mtool/start-en-listen

脚本内容很简单:

_dir="/usr/mtool"

mtool -c playlist=en-listen    #切换到英语听力播放列表

mtool -c vol=1.0            #音量放到最大(嘿嘿嘿)   

mtool -c next=random    #设置随机播放

mtool -c play     #开始播放

接下来添加定时任务

crontab -e     #将打开编辑器,在最后添加定时任务:

30 6 * * * /usr/mtool/start-en-listen >> /usr/mtool/log.client       #每天早上6:30开始播放

20 7 * * * mtool -c stop                          #每天早上7:20停止播放

 

终于。。。大功造成!!!!每天早上无法安心地睡懒觉啦啦啦!!!

当然,我们还可以添加几行代码,每天早上6:30自动关闭ssh服务,7:20再打开,这样想睡懒觉时就无法从手机ssh端关闭树莓派播放了,只能爬起来去拔电源嘿嘿嘿。。。。。