将树莓派打造成音乐播放服务器

本文由 极客范 - 半夜一声笑 翻译自 Andrew Kelley。欢迎加入极客翻译小组,同我们一道翻译与分享。转载请参见文章末尾处的要求。

几个月前,我发布了一篇文章《我对探寻终极音乐播放器的探寻》(My Quest to Build the Ultimate Music Player),在那篇文章里面描述了我对一款开源的音乐播放服务器Groove Basin断断续续将近4年的痛苦折腾过程。

它的客户端基于web页面,如下图:

groovebasin-screenshot

你也可以在这里尝试它的在线demo版本

如果你把它安装在树莓派里面,你可以把speakers附加上去,使用它你可以远程控制,也可以通过在浏览器中的点击“stream”就可以远程收听自己的音乐。

然而,在鼓捣这个之前,我需要指出的是,如果你在决定是否入手一台树莓派,答案是,不要。树莓派被过度夸大了,其实还有更好的选择。这就是为什么我写这篇教程。在这里我要提到一个,就是Beagle Bone Black 

你可以用这个来代替的原因如下:

  • 更快的cpu和内存
    • 1GHz处理器,而非700MHz
    • DDR3内存,而非SDRAM
  • 它可以直接运行Debian和Ubuntu armhf,而非运行类似Respbian的系统。在Debian已经有armhf端口的情况下仍然存在Raspbian简直就是愚蠢的行为。如果你只是安装普通的armhf Ubuntu在Beagle Bone Black上,这篇文章的剩余部分就没有必要再看下去了,你只需
    然后你就已经做完了。

    实际上,libgroove在Debian TestingUbuntu Utopic Unicorn两个版本上面已经存在了,所以一年半载之内这些发行版升级了,你也无需添加额外的个人软件包档案

  • Debian官方不推荐树莓派,因为它在运行时候需要非自由软件。Debian特别推荐了Beagle Bone Black。

如果你像我一样,同时在你收到更好建议之前不幸的买了一台树莓派,你需要跳过很多坑来让它运行起来。这篇文章就会手把手的交给你怎么绕过所有的坑,而无需自己浪费时间去自己费劲琢磨。

这篇文章开始时会假设你手上有一台全新的甚至还未装操作系统的树莓派。如果你已经做过了这一步,可以直接跳到下一部分

目录

  1. 目录
  2. 安装Raspbian并获取SSH连接
  3. 安装Groove Basin

安装Raspbian并获取SSH连接

转到树莓派下载页面,下载Raspbian Debian Wheezy种子(或者直接下载,如果你不是大虾的话)

解压压缩包,得到img文件后将其刷入你有的最大的SD卡上面。因为你需要很大的空间存放音乐!

我是在Ubuntu上面,我所需要做的仅仅是在文件管理器中右击img文件, open with, Disk Image Writer:

disk-image-writer

我确信做这一步有很多种方式,我使用的这种方式只是对我来说最简单的。

这步完成后,找一个键盘、显示器和HDMI线,你就可以看到你正在做的事情了。我们的目标是可以尽快的使用上SSH连接,从而使树莓派可以除了电源线和网线之外什么都不用插就可以工作。

树莓派第一次启动后它会给您一个清单,包含你可以做的事情。下面是我做的事情:

  • Expand the file system to fit the full SD card.
  • Set pi user password.
  • Advanced Options, enable SSH server.

现在我们将其设置为每次启动时候都有固定ip。下面是我使用的设置,你可以按照自己的需要照猫画虎:

iface eth0 inet dhcp代替为:

现在我们可以拔除TV和键盘了,我们已经无须这些废物了。直接插入网线然后开机吧!

在你现在用的电脑上面你可以用ssh连接到树莓派上面了,就像这样:

我喜欢在我的~/.ssh/config文件中添加传送门,就像这样:

它需要你输入密码,但我们也可以解决:

现在连接树莓派已经可以ssh pi这么简单了。

你需要做的第一件事就是更新所有的过时的软件到最新版:

额,我在这里看到了什么?

Bootloader都被代替了?最好重启一下看看他是不是还能用。

好了,这个时候我们还是可以通过ssh连接上我们的树莓派,所有的软件包也完全更新了。

安装Groove Basin

首先安装一些软件包:

建议你在做这个的时候在screen或者tmux这类环境下,因为一旦你的网络断了,我们的命令还可以继续。这也让我们可以在树莓派运行时候去做点其他的事情。

我需要一次解释清楚如何执行这一步。然而,记住有3个重要的编译需要用好长时间,所以如果你想同时开始这3个任务并且离开电脑8个小时或更久,你可以跳过这个教程并开始同时执行它们了。这3个软件的make步骤为:

  • SDL2
  • libav
  • Node.js

libgroove,第一部分

得到libgroove源代码,在源码里面创建build文件夹:

我们在debug模式build,这样在有任何错误的时候就可以得到有用的堆栈信息。

记住,你可以跳过下面的步骤,它仅花一两分钟时间就可以完成,这些命令仅供参考,我也已经在下面贴出了在我机器的输出:

信息显示缺失了以下库:

  • chromaprint
  • libebur128
  • SDL2
  • libav

我们可以让安装libgroove自动解决依赖问题,但是在系统上面事先安装这些依赖的软件包更简单。我们就这么做。

chromaprint

幸运的是,chromaprint已经在软件仓库里面了:

libebur128

下一步我们编译最简单的一个,libebur128.

矮油,好像我们缺少了一些依赖软件:

最好安装这个:

重新试试那一行配置行:

这样好多了。

现在编译并安装源码:

由于Debian cmake包中的一个bug,它把库文件放在/usr/local/lib/arm-linux-gnueabihf/

我们来改一下:

SDL2

接下来我们让SDL2跑起来。树莓派自带的SDL有什么问题?是因为它自带的是1.2版本,而libgroove是基于版本2的。

SDK下载页面找到最新的SDL2的源码URL:

SDL需要音频后端才可以工作,现在我们在配置命令之前先安装它:

我们只需要SDK2的音频特性,而且实际上,它的视频的一些功能还会带有编译的问题。所以我们在configure的时候禁止掉所有我们不需要的功能:

这步要费一些时间,但是在完成后,你可以看到这样的一行:

这很重要,你除了有声卡驱动外还有disk、dummy和oss

找点事情做,这一步要个把小时才可以完成。或者如果你想让你的树莓派投降,你可以跳过本教程,同时编译libav。但是我要假设你正在按顺序做这些,而且让你自己来决定如何跳过这篇文章。

这个时候,冗长的编译过程终于成功了,我们可以安装SDL了:

libav

我们回到home文件夹(或者我们决定安装的目录):

libav下载页面(http://www.libav.org/download.html)得到libav最新的版本10的URL:

先做些预备工作,然后开始configure:

同样,树莓派还是会非常困难的完成configure命令,特别是你同时也在编译SDL2,所以如果它用了一两分钟,不要着急

这个过程要长达8个小时。认真的说,我会开始这个过程后直接去睡觉。如果你希望同时开始所有的编译,你可能会同时开始Node.js的编译。

libav编译成功后:

我们终于完成了libgroove的依赖软件的安装,我们终于可以开始安装libgroove本身了。

libgroove,第二部分

这个时候,你已经等了很长时间了,树莓派也已经编译libav和SDL2成功,你也已经安装了它们。如果这些还没做完,你需要搞明白为什么,然后在接下来这个教程开始之前将其修复。

这个输出比前面的好看多了。

这个make相对而言应该快多了。

这个时候我们已经把必要的库安装好了:

Node.js

我们现在需要Node.js。从它的下载页面(http://nodejs.org/download/)找到最新的stable源码

编译过程要持续数个小时。

安装完成后需要执行:

Groove Basin

现在是开始音乐播放服务器Groove Basin的时间了。

这个过程要持续数分钟,它会下载和编译Groove Basin依赖的软件。

我们建立音乐目录,如果没有的话:

把你所有的音乐都拷贝到这个目录下。

现在需要启动服务器了。如果你想要改变configure选项,使用Ctrl+C结束服务器然后编辑config.js

享用吧!请自由的关注GitHub上面的GrooveBasin主页报告bug report或者需要的特性,或者加入在irc.freenode.org上面的#libgroove 讨论获取故障帮助。

我们对pull request非常欢迎,特别是可以让groovebasin.com看起来更漂亮的Pull request。



原文链接: Andrew Kelley 翻译: 极客范 - 半夜一声笑

译文链接: http://www.geekfan.net/10419/

[ 转载请保留原文出处、译者和译文链接。]

微博 @知道不好玩还玩

2 评论

  1. tek_eternal  /  2014 年 8 月 12 日, 上午 8:43 回复

    花了2天弄好了,可是播放出来的音乐一卡一卡的。。。有人跟我一样吗= =

    Thumb up 2 Thumb down 0

    • Dufr  /  2014 年 8 月 15 日, 上午 11:57 回复

      我现在都快弄残了,用BeagleBone black Debian7.5的环境,好多折腾,获取不到libgroove-dev,然后现在在一步步的编译,疯了

      Thumb up 0 Thumb down 0

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">