用树莓派做音乐播放器

之前在树莓派B+版上灌了Raspbmc用来实现XMBC多媒体播放器,但XBMC不支持播放无损的flac或ape等音乐,最近买了个惠威蓝牙音箱,想把树莓派做成无损音乐的播放器,网上找到了RaspyFiVolumio两款,用Win32DiskImager灌完测试下来发现RaspyFi无法启动,而Volumio可以正常启动,这里就以Volumio为例说明如何部署。

之前在淘宝买过一款USB外置声卡DAC解码器,网上资料说Volumio可以直接输入到DAC,可以减少音质的失真,因此把我那块声卡当成DAC解码器,USB端连接树莓派,音频输出连接音箱,启动Volumio后竟然也认,不过需要通过浏览器访问树莓派,进入Playback页面,把Audio Output设成Set,默认的ALSA是树莓派的内置声卡,点【Save Changes】应用即可通过USB播放无损音乐到音箱。

由于是无损音轨容量比较大,因此我把这些音乐跟电影等放到一个2T的外挂硬盘上,分成3个区(sda1~3),音乐在最后一个分区,碰到的问题是Volumio启动后为会把所有的分区都加载成/mnt/USB目录,每次都需要进入Library去【Update Library】,而且硬盘比较大更新时间比较长,扫到音乐内容做成Playlist后重启树莓派就不能播放了,还要重复长时间的Update Library过程,很痛苦。如果只放到一个U盘上就不存在我这个问题。

虽然网上看到说/etc/usbmount/usbmount.conf文件是设置USB的加载,但我没找到能让各个分区加载成不同目录的办法,经过多方测试,终于找到解决的办法。原理是启动后在rc.local里把自动加载的/mnt/USB都卸载,然后手工加载,把小容量分区加载成/mnt/USB,把音乐分区加载成/mnt/USB2,然后把音乐分区里的音乐目录做成软链接放到/mnt/USB中,这样每次启动后USB只绑定到小容量分区,音乐目录也能在USB目录里找到,然后Volumio更新音乐目录就很快,而且Playlist在重启后也能直接播放了。

这是我用到的脚本:

#!/bin/bash
#Add next line to /etc/rc.local
#bash -l /home/pi/mount-music.sh
#force to umount USB
sudo umount -f /mnt/USB
#force to umount USB2 or creat it if not exist
if [ -d "/mnt/USB2" ]; then
sudo umount -f /mnt/USB2
else
sudo mkdir /mnt/USB2
fi
#confirm to umount USB
isexist=$(df -h | grep "/mnt/USB" | grep -v "grep")
if [ "$isexist" ]; then
sudo umount -f /mnt/USB
fi
#mount USBs
sudo mount -t ntfs /dev/sda1 /mnt/USB
sudo mount -t ntfs /dev/sda3 /mnt/USB2
#make link if not exist
if [ ! -d "/mnt/USB/Music" ]; then
ln -s /mnt/USB2/Music /mnt/USB/Music
fi

2015-5-21 Updated: 今天才发现XBMC本身也能无损的flac或ape等,需要进入音乐功能,还能对单个目录进行收藏。

Tags:

Leave a Reply


提醒: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。请务必注意user必须和评论者名相匹配(大小写一致)。