查看: 1568|回复: 0

用pcDunio或raspberry pi DIY高清音乐播放系统全过程

[复制链接]

该用户从未签到

发表于 2017-6-27 10:14:35 | 显示全部楼层 |阅读模式
分享到:

先看一下在iPhone 6 plus上用虾米播放高音质音乐的效果:


苹果的Airplay协议是通过基于RSTP(Real Time Streaming Protocol)协议通过UDP传输的无损编码音频流(Apple Lossless codec,音频流本身经过了AES加密,私钥是不公开的,这样只有苹果和其合作伙伴才能使用这个协议。但是2004年有人通过逆向工程获得了私钥并将其公开,这样我们也可以自己搭建低成本高音质的基于Airplay的音乐系统。在iPhone成为街机的时代,每个人的手机里有很多喜欢的音乐,如果在家里可以通过无线网络在音响系统里播放会方便很多。
硬件


  • pcDunio Acadia 或 Raspberry Pi 一只
  • 3.5mm音频线一根
  • 有源音箱一对
  • 网线一根或USB无线网卡一只
音频芯片

好的音质需要好的音源,无损音乐加好的前端输出是必不可少的。 pcDuino Acadia集成的音频芯片是业界领先的英国Wolfson(欧胜微电子)为高清音频设计的WM8962 。树莓派集成的音频芯片则是由美国Broadcom(博通)封装在主芯片BCM2835里通过PWM (pulse-width modulation) 提供的,比较简单音质一般,达不到高清音频的要求。
下面是树莓派音频口播放1kHz正弦信号的输出波形,可以看出来波形并不好。

正是因为板载音频质量差强人意,Wolfson也专为树莓派设计了基于WM5102 codec芯片的Wolfson Audio Card (售价高达$34.95,性价比不高,这块芯片也用在了魅族MX3上)。
更好的方案是使用USB声卡,如淘宝上可以购买的基于德州仪器的PCM2704的USB声卡,40多人民币。

综上,如果想DIY自己的高清音乐播放系统,只有树莓派还是不够的,可以考虑用pcDunio Acadia或额外购买USB DAC。
声音测试和调节

声音测试

首先需要用音频线把板子和有源音箱连接起来,如果线材或音箱质量不够好,会立刻听到背景噪音,实测树莓派的背景噪音比pcDuino Acadia要大一些。
注:普通用户不一定有权限使用系统音频设备,所以以下测试需要root或audio group里的用户。
首先可以用speaker-test命令测试是否能出声。
<ol><li><code>hugo@raspberrypi2 ~ $ sudo speaker-test speaker-test 1.0.25
Playback device isdefault
Stream parameters are 48000Hz, S16_LE,1 channels
Using16 octaves of pink noise
Rateset to 48000Hz(requested 48000Hz)
Buffer size range from512 to 32768
Period size range from512 to 32768
Using max buffer size 32768
Periods=4
was set period_size =8192
was set buffer_size =32768
0-FrontLeft
Time per period =2.234240
0-FrontLeft
Time per period =2.899088
0-FrontLeft
如果听不到声音,可以检查一下连接和系统设置:树莓派的命令输出:
<ol><li><code>hugo@raspberrypi2 ~ $ sudo aplay -l****List of PLAYBACK HardwareDevices****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices:8/8
Subdevice#0: subdevice #0
Subdevice#1: subdevice #1
Subdevice#2: subdevice #2
Subdevice#3: subdevice #3
Subdevice#4: subdevice #4
Subdevice#5: subdevice #5
Subdevice#6: subdevice #6
Subdevice#7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices:1/1
Subdevice#0: subdevice #0
pcDunio Acadia的命令输出:<ol><li><code>Hardware device with all software conversionshugo@Acadia ~ $ sudo aplay -l
****List of PLAYBACK HardwareDevices****
card 0: wm8962audio [wm8962-audio], device 0:HiFi wm8962-0[]
Subdevices:0/1
Subdevice#0: subdevice #0
card 1: imxhdmisoc [imx-hdmi-soc], device 0: IMX HDMI TX mxc-hdmi-soc-0[]
Subdevices:1/1
Subdevice#0: subdevice #0
如果你安装了USB声卡,还需要设置系统把USB声卡设置成缺省声卡。sudo vi /etc/modprobe.d/alsa-base.conf
修改
options snd-usb-audio index=-2

<ol><li><code>#options snd-usb-audio index=-2  options snd-usb-audio nrpacks=
有些系统可能还需执行下一步(注:树莓派2不需要)sudo vi /usr/share/alsa/alsa.conf 把 pcm.front cards.pcm.front 替换成pcm.front cards.pcm.default


测试音乐播放

下载一个mp3文件在pcDunio或树莓派上,然后安装mpg321
<ol><li><code>sudo apt-get install mpg321执行mpg321 example.mp3就可以测试音乐播放了
音量调节

可以执行sudo alsamixer来设置音量,执行sudo alsactl store 0恢复出厂设置。
对比一下可以看到pcDunio Acadia的设置项要丰富多了,除了Headphone这项可以提高音量(5dB)外,Digital这项的增益调节也可以大幅提高音量(23.25dB)。推力方面也相对好多了,可以直推一些好耳机。


Airplay设置

这里我们使用开源的Airplay解码软件Shairport。
安装依赖库

<ol><li><code>sudo apt-get install git libao-dev libssl-dev libcrypt-openssl-rsa-perl libio-socket-inet6-perl libwww-perl avahi-utils libmodule-build-perl libasound2-dev libpulse-dev下载代码,编译安装

root@Acadia ~ $ cd shairport  
root@Acadia ~ $ ./configure  
ConfiguringShairport
OpenSSL found  
libao found  
PulseAudio found  
ALSA found  
Avahi client found  
getopt.h found  
CFLAGS:-D_REENTRANT -I/usr/include/alsa -D_REENTRANT  
LDFLAGS:-lm -lpthread -lssl -lcrypto -lao -lpulse-simple -lpulse -lasound -lavahi-common -lavahi-client  
Configure successful.You may now build with'make'
root@Acadia ~/shairport $ make  
pcDunio Acadia上还需要执行这一步:root@Acadia  ~ $ cd perl-net-sdp  
root@Acadia  ~/perl-net-sdp $ perl Build.PL  
root@Acadia  ~/perl-net-sdp $ sudo ./Build
root@Acadia  ~/perl-net-sdp $ sudo ./Build test  
root@Acadia  ~/perl-net-sdp $ sudo ./Build install  
root@Acadia  ~/perl-net-sdp $ cd ..
运行Shairport

运行非常简单: sudo shairport -a "Acadia" 执行完后拿起你的iPhone,虾米,QQ音乐或百度音乐App都支持Airplay了,在播放界面上选择输出到Acadia上就可以开始欣赏Airplay啦。
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

手机版|小黑屋|与非网

GMT+8, 2024-4-19 20:53 , Processed in 0.114390 second(s), 17 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.