分享

斯蒂芬·菲利普斯?|使用UPnP和DLNA(重新)在树莓派播放音乐

 dwlinux_gs 2015-03-21

编辑,2014年5月11日:请注意:有(再次)安装gmediarender更新说明。本教程的其余部分仍然有效,但。

我们的目标是为

音乐系统与树莓派插入到您选择与您的手机放大器播放音乐。音乐可以来自你的手机上的MP3音乐,从你的服务器上,或从互联网广播电台的文件。如果有一个以上的Andr??oid手机在你的家庭,你可以把它们都同步,显示出相同的播放列表,并控制相同的音乐。如果您有多个树莓小童,你可以放一在每个房间,并选择其中一个一起玩音乐。这是所有自由软件和开放标准来实现的。我刚刚写了一些说明来说明如何做到这一点。

如果幸运的话您最初的支出将仅约45英镑。最终的结果将是类似于从Sonos的和深蓝成本核算系统loadsamoney。另外附加设备通过其他的Hi-Fi播放音乐或电视也将是45英镑。

刚才有关获取树莓小童后使用手机播放音乐或手机作为控制器已经非常普及。自那时以来,虽然软件开发与Debian发行版的新版本,gmrender,复活和树莓派固件。考虑到所有这些新版本的过程现在非常简单,声音没有恼人的持久性有机污染物。

你需要什么

  • 一个树莓派
    • 我有我有一个从ModMyPi的35英镑
  • 无线USB适配器(或接近你的Hi-Fi有线以太网连接)
  • 微型USB电源(大多数手机使用这些,所以你可能有一个的话)
  • SD卡(2GB最低) - 也许是一个老的相机?
  • SD卡读/写器 - 通常内置在计算机
  • 你在Linux服务器上的音乐用(如光盘翻录到MP3文件) - 这可以代替如NAS设备或手机上的Windows机器或只是MP3音乐
  • 配备了3.5mm辅助输入和扬声器放大器(也许是电视的声音吧?)
  • 音频线郫县连接到功放
  • 至少有一个Android设备
  • 一些路??由器/无线网络的媒体服务器连接到树莓派
  • 你可能需要一个USB键盘和一个TV /显示器做初始设置(希望你有这些躺在附近)

建立树莓派是一个UPnP媒体渲染器

一个重要的事情是让gmrender,复活(又称GMediaRenderer,gmrenderer,gmrender,...)安装并正常工作。一旦做到这一点,你就可以通过树莓派从您的手机播放MP3。GMediaRenderer是被称为UPnP媒体渲染器:这是用于使用UPnP协议的媒体文件的目的地。有很多的软件,支持UPnP和许多现代化的“智能电视”,也可以发挥你的音乐这条路。这也涉及到DLNA,但我不得不承认,我不明白这些标准之间的相互作用。

安装操作系统

我是从新鲜的开始,下载最新的“喘息”的Debian Linux的分布树莓派下载页面。在写的时候,这是2013年5月25日,喘鸣raspbian.zip.torrent。继上树莓派网站的说明,我将它复制到SD卡,打开了RPI上。

获取Raspebrry皮在网络上

这是更复杂的部分,一个是我写的最后一次。这取决于你的网络上,基本上让我们看看我的说明并使用谷歌找到更多一些。

第一步骤和更新

我们现在必须把一切更新到最新版本。请注意,这些指令将获得最新的软件和最新的固件,所以你可能最终得到的东西比我更近,因此稍有不同的行为。要看到的是什么操作系统,你必须:

$ 的uname -a
Linux的raspberry2 3.6.11+ #474 PREEMPT周四6月13日17时14分42秒BST 2013 armv6l GNU / Linux的

执行初始配置:

$ sudo的 raspi,配置

您需要启用ssh访问,设置密码,设置主机名和重启。

当我看着这最后一次,即使使用脉冲音频有恼人的持久性有机污染物,当音乐开始和停止我的最终解决方案。这个问题是由树莓派开发商调查,现在已经固定在最新的固件

更新固件到最新的驱动程序等,我们可以用RPI-更新工具

$ sudo的 apt-get的安装 RPI更新
$ sudo的 RPI更新
 ***运行ldconfig的
 ***保存当前的固件版本
 ***正在同步更改磁盘
 ***如果没有错误出现,您的固件已成功安装
 ***需要重新启动来激活新固件
$ sudo的 关机 ,现在-r

一旦RPI已重新启动,你可以看到正在使用的版本:

$ / OPT / VC /斌/ vcgencmd 版本
2013年6月17日20时49分11秒
版权所有(c)2012博通
版本d380dde43fe729f043befb5cf775f99e54586cde(清洁)(发布)

现在,您需要更新所有软件。这可能需要一点时间,但它是所有自动:

$ sudo的 apt-get的更新
$ sudo的 apt-get的升级

安装GMediaRenderer

请注意:有(再次)安装gmediarender更新说明

登录到您的RPI,并确保你在你的home目录。获取副本从GitHub的gmrender-复活项目,并输入出现的新目录:

$ CD
$混帐克隆的https:// github上.COM / hzeller / gmrender,复活的.git
$ CD gmrender,复活

亨纳泽勒所做的修复bug和增加功能到老了伟大的工作gmrender项目,现在有一个树莓派自己这么取得了一定的说明包含gmrender,复活的工作非常漂亮。你现在要做的就是遵循INSTALL.md文件(类型为“更INSTALL.md”看到他们,或去说明在GitHub上看到他们的在线):

$ sudo的 apt-get的安装 的autoconf automake的libtool的
$ sudo的 apt-get的安装 libupnp-dev的libgstreamer0.10-dev的\
                gstreamer0.10-插件基gstreamer0.10-plugins的好\
                gstreamer0.10-插件坏gstreamer0.10-插件丑\
                gstreamer0.10-ffmpeg的\
                gstreamer0.10-的PulseAudio gstreamer0.10-ALSA
$。/ AUTOGEN SH
$。/配置
$ 化妆
$ sudo的 制作 安装
$ sudo的 CP 脚本/ init的.d的/ gmediarenderer 的/ etc / init的.D

如果随访到这一点,你会刚刚复制的“初始化脚本”的启动和停止gmrender服务到哪里所有这些脚本住/etc/init.d目录。亨纳的脚本可能需要编辑您的具体情况,但它是所有评论来告诉你该怎么做。我用两个树莓小童在两个房间,所以我只是改变了UPNP_DEVICE_NAME为“厨房”,一个为“卧室”。初始化脚本会自动生成一个唯一的标识符(UUID)为您使用它,所以如果你使用一个以上的话,他们将不会在网络上交锋每个树莓派。如果你需要编辑的文件,用“六”或“纳米”编辑文件/etc/init.d/gmediarenderer

要真正让操作系统在我们需要多一个命令,然后,我们不妨重新启动,以测试它的正确的时间运行init脚本:

$ sudo的 更新,rc.d的gmediarenderer默认
$ sudo的 关机 ,现在-r

测试GMediaRenderer是通过列出所有的进程使用“ps”和搜索输出gmediarender和“grep”运行:

$ ps的 辅助| grep的 gmedias
 2279?SSL 69:52 的/ usr / local / bin目录/ gmediarender -f卧室-d -u bd1dcf3e746aa69812943cb1d00f7ebc --gstout-audiosink = alsasink --gstout-audiodevice = sysdefault --gstout-初始音量分贝= -10

你的输出不会完全一样,但只要你得到的东西,然后它的运行。

设置默认音量

大概把音量放的最简单的方法是运行命令alsamixer命令,并按下向上箭头光标,直到屏幕看起来是这样的: 按ESC键退出。然后你需要存储的配置,使其当机器开启时默认:
alsamixer中对树莓派

$ sudo的 alsactl店

此时,你应该将树莓派,这样就可以将其插入到你的放大器。这些说明假设你只是打算使用3.5mm立体声音频插孔。从音质是不是世界上最好的,但对很多人来说是不够好。如果你想要更好的,那么你可以买一个USB声卡非常便宜,但随后的声音配置将是不同的,我不能帮你了(还)。

检查ALSA是好的

总结这部分,我没有改变,即使它看上去就像是没有什么工作。我不知道这是怎么回事,但我已经包括了一些诊断输出这里的情况下,它是有用的。你也许可以跳过下一节!

选中“sysdefault”音频接收器是什么GMediaRenderer将使用:

$申请L
    丢弃所有样品(播放)或生成零样品(捕获)
默认:CARD = ALSA
    bcm2835 ALSA,ALSA bcm2835
    默认音频设备
sysdefault:CARD = ALSA
    bcm2835 ALSA,ALSA bcm2835
    默认音频设备

从“amixer”的更多信息。这看起来很可疑,因为它说,播放“单声道”的时候,我们所期望的“立体声”:

$ AMIX
简单的混音器控制“PCM” ,0
  功能:pvolume pvolume连PSWITCH PSWITCH连penum
  播放通道:单声道
  限制:播放-10239 - 400
  单声道:回放-1862 [79%] [-18.62dB] [上]

确认正确的驱动程序被加载(bcm2835):

$ lsmod的| grep的 SND
模块尺寸使用的
snd_bcm2835 16304 1
snd_pcm 77560 2 snd_bcm2835
snd_seq 53329 0
snd_timer 19998 2 snd_pcm,snd_seq
snd_seq_device 6438 1 snd_seq
苏州高新区58447 6 snd_bcm2835,snd_timer,snd_pcm,snd_seq,snd_seq_device
snd_page_alloc 5145 1 snd_pcm

运行扬声器测试:

$说话者测试

我发现这个一直测试它认为是“左前”,并发出噪声在这两个扬声器。有上应该发挥出来只有一个扬声器应该是用于测试的RPI文件:

$ aplay。/股/声音/ ALSA / Front_Right .WAV
$ aplay。/股/声音/ ALSA / Front_Left .WAV

我发现,这两个出来这两个扬声器。另一位发言者的测试表明,立体声是可能的:

$说话者的测试 -c 2

这导致从每个扬声器发出的声音进来转!最后,我试过打2的MP3(的)一个有用的页面,他们也工作得很好:

$ sudo的 apt-get的安装 mpg123的
$ CD / tmp目录
$ wget的HTTP:// WWW . /音频/右.MP3
$ wget的HTTP:// WWW . /音频/左.MP3
$ mpg123的right.mp3
$ mpg123的left.mp3

有一次,我发现,人的MP3立体声我完成安装的其余部分,发现从GMediaRenderer音乐也是立体声。肯定有一些错误,但它并不影响我们想要做的,我离开它单独好现在。

将手机用作控制器

为了控制音乐与您的手机我用BubbleUPnP为Android。去谷歌播放,并安装BubbleUPnP。这是一个UPnP的渲染器和控制点,还与OpenHome协议(稍后更多)。换句话说,它会如果有,也可以告诉裨播放音乐播放音乐(与视频和图片)从所述媒体服务器。免费的应用程序有一些限制(没有太多限制),并且你可以支付3英镑有它不受限制这是值得的,无论你需要与否,如果你问我。其他UPnP控制器存在,无疑也可用于iPhone,但我还没有尝试过。

如果你运行BubbleUPnP,进入“设备”屏幕上,那么你应该看到你的树莓派列在伴随着“本地渲染器”,这是手机本身的“渲染器”一节。选择树莓派。在“库”部分中,您将看到“本地媒体服务器”,这是你的手机上的文件(如音乐),你可能会看到其他的音乐库,以及如果你有在家里的媒体服务器。要通过树莓派从您的手机播放音乐选择本地媒体服务器,从“库”界面选择一些音乐,让它发挥。

如果别人在家里也安装在自己的手机BubbleUPnP并正确配置,那么你也可以从他们的手机选择音乐上的树莓派玩。

从媒体服务器播放音乐

我有我所有的音乐存储在FLAC和MP3格式的小型Linux计算机是所有的时间:这是我的“媒体服务器”。你可能有一台笔记本电脑或电脑与音乐上是有时,或NAS驱动器的音乐,或者你可能把音乐上的USB盘,并把它插入到了树莓派。所有这些选项都可以被认为是媒体服务器。

以“服务”的音乐必须有一台电脑与软件上的理解UPnP协议,这样手机可以找到它,然后选择音乐吧。执行此操作时,手机只是告诉树莓派从媒体服务器,因此它不会通过电话,这是很好的,因为它不吸电池的所有数据流直接获取音乐。

我会尝试在这里介绍一些选项。这里是一个大名单上的维基百科的UPnP服务器

从Windows计算机上的音乐服务

我没有这样做,但也有已知的工作的各种选项:

配置软件,它应该出现在BubbleUPnP“设备”屏幕上的“库”名单。

使用MiniDLNA一个独立的Linux计算机上的音乐服务

这是我有:计算机运行Linux与存储的音乐。同样,也有很多选择,但我选择使用
MiniDLNA软件。你可以最有可能找到MiniDLNA在你的包管理器。对我来说,我所做的:

$ sudo的 apt-get的安装 minidlna

点minidlna在通过编辑/etc/minidlna.conf文件,例如音乐文件:

#设置为你想要扫描的目录。
media_dir = A,到/ mnt / usbdisc1 /音乐/专辑
#设置这个,如果你想自定义显示在您的客户名称
friendly_name =我的DLNA服务器
#设置此,如果你想指定要MiniDLNA存储其数据库和专辑封面的缓存目录
DB_DIR = 的/ var /缓存/ minidlna

我也不得不“命令CHOWN minidlna.minidlna的/ var /缓存/ minidlna”来得到它的工作,但情况因人而异。

该日志minidlna是/var/log/minidlna.log所以看到最新的消息做“尾-f /var/log/minidlna.log”,并使用Ctrl-C时,你已经受够了。有时候,你需要强制minidlna重新扫描您的媒体文件,在这种情况下,使用“sudo的服务minidlna力量重装”。

使用MiniDLNA对树莓派音乐服务

如果您有就是所有的时间没有其他的电脑,那么你可以把你的音乐USB硬盘驱动器上,并把它插入到了树莓派。在树莓派应自动找到USB驱动器,并安装它,使得它可以使用(类型为“安装”,看看有什么可用)。你仍然需要有UPnP的服务器,以便遵循上面的说明来安装MiniDLNA。你将不得不设置“media_dir”配置选项指向您的USB驱动器。(对不起,这是一个有点简单,我还没有尝试过。)

使用NAS的音乐服务

如果你有一个NAS在网络上,或者你有一个Windows计算机与音乐上的共享驱动器,那么你可以安装网络驱动器上的树莓派,并获得音乐,就好像它是一个本地磁盘(即跟随在上一节)。 为了安装网络驱动器,请按照下列有用的指示

使用多个同步控制器

如果你已经坚持了下来,到目前为止,那么你有一个或多个树莓小童播放音乐,从一个或多个媒体服务器,所有从您的手机进行控制。如果你有一个以上的Andr??oid设备在你的房子,那么有一个需要解决的一个保留的问题。在手机上的每个BubbleUPnP控制器可以看到服务器上的音乐文件,并可以告诉树莓派来播放音乐,但他们会互相争斗,没有共享播放列表或共享“现在玩”指示。

为了实现在我们需要使用的启动视频显示的情况OpenHome协议上的所有UPnP设备的顶部,这样所有的控制器(手机,平板电脑)共享同一个播放列表,音量和“现在玩”的观点。要做到这一点,我们需要BubbleUPnP服务器。同样,也有很多地方可以安装这最后一块的软件。有对所提供的说明中BubbleUPnP服务器页面,但我会解释一下。对我来说,最有意义有BubbleUPnP服务器运行在同一台计算机的MiniDLNA服务上。

BubbleUPnPServer一个独立的Linux计算机上

我的服务器上运行Ubuntu的,因此所有我需要做的就是:

$ sudo的 apt-get的安装 的OpenJDK-7-JRE,无头
$ sudo的 附加 ??的apt-库PPA:bubbleguuum / bubbleupnpserver
$ sudo的 apt-get的更新
$ sudo的 apt-get的安装 bubbleupnpserver
$ sudo的 启动bubbleupnp

BubbleUPnPServer对树莓派

首先安装Java:

$ sudo的 apt-get的安装 的OpenJDK-7-JRE,无头

然后下载BubbleUPnPServer,使安装它并解压包的地方。我们还将安装的ffmpeg,以便它可以在必要时转码文件:

$ CD / tmp目录
$ Wget的HTTP:// WWW . / bubbleupnpserver / BubbleUPnPServer-DISTRIB .ZIP
$ CD 的/ usr / local / bin目录
$ sudo的 MKDIR BubbleUPnPServer
$ CD BubbleUPnPServer
$ sudo的 解压缩的/ tmp / BubbleUPnPServer-DISTRIB .ZIP
$ sudo的 apt-get的安装 的ffmpeg

得到BubbleUPnPServer运行的最简单方法是使用提供launch.sh脚本,首先使其可执行:

$ sudo的 文件模式 + X launch.sh
$ sudo的 /发射.SH> 的/ dev / null的 2>&1&

这第二个命令运行启动脚本,并发送其所有输出到/ dev / null的(这意味着它不会出现在终端上)。最后的“&”是指它在后台运行,所以你得到你的终端提示符后面。检查是这样的运行:

$ ps的 辅助| grep的 巴布
13089点/ 0     Sl的1:18的java -Xss256k -Djava.awt.headless = -Djava.net.preferIPv4Stack = -Dfile.encoding = UTF-8 -jar BubbleUPnPServer.jar
13212点/ 0     S + 0:00 --color =自动巴布

该服务的日志文件可以在/usr/local/bin/BubbleUPnPServer/BubbleUPnPServer.log.0被发现,所以如果你仍然在同一个目录,键入“尾-f BubbleUPnPServer.log.0”会告诉你最新的信息(使用Ctrl-C停止观看)。

这种方法的问题是,BubbleUPnPServer过程,如果你重新启动你的树莓派,所以我们需要一个init脚本,它不会自动启动。 克里斯Mobberley已经写了一个只是为了这个目的,但你需要改变自定义DAEMON_PATH “在/ var / WWW / bubbleupnp”到“的/ usr / local / bin目录/ BubbleUPnPServer”是与我以前的说明一致。我也刚刚发布了更多的通用指南,启动脚本能够适应这种情况。

设置BubbleUPnPServer

无论你已经安装了BubbleUPnPServer你现在应该有它运行。你需要去服务器的Web管理页面对其进行配置。该管理页面可以对端口58050被发现所以在Web浏览器中输入http://主机名:58050,其中“主机名”是运行BubbleUPnPServer的计算机的名称。如果你刚刚安装了它在树莓派,那么你可能不会有一个Web浏览器识别的主机名。在这种情况下,使用皮的IP地址,发现这是这样:

$ IP地址显示
1:LO:<LOOPBACK,UP,LOWER_UP> MTU 16436队列规定noqueue状态未知
    链路/环回 00:00:00:00:00:00 BRD 00:00:00:00:00:00
    INET 127.0.0.1 / 8 范围内的主机罗
2:为eth0:<广播,多播,UP,LOWER_UP> MTU 1500队列规定pfifo_fast状态UP将qlen 1000
    链接/醚 B8:27:EB:94:63:30 BRD FF:FF:FF:FF:FF:FF
    INET 192.168.1.59 / 24 BRD 192.168.1.255全球范围内的eth0

因此,在这种情况下,RPI的地址是192.168.1.59(「eth0的“下的,因为它是插在以太网电缆),我需要去http://192.168.1.59:58050在我的网页浏览器。你如果有无线网络上那么IP是在“为wlan0”的范畴。

一旦你的管理页面然后按照从指令BubbleUPnPServer网站。您应该看到您在媒体渲染器选项卡中列出树莓派。勾选框“创建OpenHome渲染器”。

使用BubbleUPnPServer

一旦你创建了OpenHome渲染器,那么你可以从你的手机使用。回到BubbleUPnP您的手机上,进入“设备”屏幕。现在你应该可以看到你树莓派有两次,一次是和以前一样,现在还出现了“(OpenHome)”之后。如果使用该渲染器从你的手机,然后所有指令通过BubbleUPnPServer和你所有的手机去可以共享相同的播放列表等。

使用Android的OpenHome BubbleUPnP

使用Android的OpenHome BubbleUPnP

最后的思考

最后,有很多更给BubbleUPnP客户端和服务器,我不能涵盖这里是不是做的树莓派。在客户端,例如可以从互联网广播电台,并从谷歌音乐播放音乐。您也可以设置服务器,让你可以从你的房子外面访问,并通过一些巧妙的配置使它所以,如果你去谁拥有DLNA渲染一个朋友家(很多电视做这些天),那么你可以使用你的电话告诉你的朋友的电视从服务器播放音乐!

该解决方案不会产生同步的音乐从几个RPI的到来一次。我明白这是可以做到Squeezelite这里更多信息)。

如果你有苹果的设备,那么你可能想使用的Airplay,在这种情况下看shairport

有一个新的协议,名为MagicPlay这是一个开放版本的AirPlay。同样,我还没有尝试过,但它看起来非常有前途。

很多人都在做同样的事情。有一个从马克特别好帖子

我很高兴回答下面的问题,但做阅读大量的评论跟帖对以前的帖子树莓派论坛。我试图解决一些问题,ALSA在另一篇文章(虽然请注意,这是一个不同的喘息和固件版本)。


2013年7月22日,编辑:固定错字alsactl命令。
2013年7月23日,编辑:包括对BubbleUPnP服务器初始化脚本的详细信息。
2013年8月11日,编辑:添加BubbleUPnP为Android截图显示OpenHome。
2014年-02-20,编辑:更新BubbleUPnP服务器版本0.8
2014年8月31日,编辑:更新BubbleUPnP服务器版本为0.8.3。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多