将音频重定向到另一台AirPlay设备


20

我在Raspbian上设置Mopidy,因此可以将Raspberry Pi用作Spotify(和本地文件)自动存储塔。我知道Raspberry Pi的模拟音频输出不是很好。

有没有一种方法可以将所有音频从Raspberry Pi重定向到AirPlay设备(例如Airport Express)?

如果我还可以从命令行执行所有操作,那就太好了,因此我可以设置一些脚本来切换不同的设备。


这是一个很大的问题。我喜欢airplay,在Pi上使用它很有意义。会在这个但很好的问题上挖掘我的自我!+1
Piotr Kula 2013年

据我了解,可以使用PulseAudio完成。我也在挖掘。
leolobato

看看我们在这里讨论什么raspberrypi.org/phpBB3/...
jmp909

我知道这有点离题-但是,如果您不喜欢远程playbac,那么一些不错的USB DAC呢?
13年

Answers:


13

如有必要,可以使用mpd,pulseaudio和raop2模块:

  • mpd,用于管理播放列表,库等(sudo apt-get install mpd
  • 用于管理音频输出的pulseaudio:用于AirPlay的raop或任何其他输出设备,例如模拟插孔,HDMI,http流服务等(sudo apt-get install pulseaudio
  • 如果pulseaudio内置的原始raop模块不起作用,用于pulseaudio的raop2模块

我必须从源代码构建pulseaudio,以便获得pulseaudio的RAOP模块的更新版本。


这是我所做的工作(它可能会抱怨缺少软件包,只是sudo apt-get install它们):

安装MPD

sudo apt-get install mpd

安装PulseAudio

选择A:您有旧的AirPlay设备,或者不需要UDP流。

它比较容易,但兼容性较差。

sudo apt-get install pulseaudio

选择B:您需要更好的兼容性,并同时支持TCP和UDP流

然后,您需要raop2模块用于pulseaudio,这意味着从源代码构建PA。

如果尚未安装git,则构建pulseaudio(请参阅官方说明):

sudo apt-get install git intltool autoconf build-essential
cd
git clone https://github.com/hfujita/pulseaudio-raop2
cd pulseaudio-raop2
./bootstrap.sh
make
sudo make install

在我的设置中,我必须手动链接libpulse.so.0:

cd ~/pulseaudio-raop2
sudo rm /usr/lib/arm-linux-gnueabi/libpulse.so.0
sudo ln -s `cd;pwd`/pulseaudio-raop2/src/.libs/libpulse.so.0 /usr/lib/arm-linux-gnueabi/libpulse.so.0
sudo chown root.root /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2
sudo chmod 744 /usr/lib/arm-linux-gnueabi/libpulse.so.0

或者,根据您的喜好:

cd ~/pulseaudio-raop2
sudo rm /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2
sudo mv pulseaudio-raop2/src/.libs/libpulse.so.0 /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2
sudo chown root.root /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2
sudo chmod 744 /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2

配置一切

MPD初始设置

现在我们需要设置MPD:

sudo vi /etc/mpd.conf

在该文件中,设置以下内容:

music_directory "/path/to/your/music"
user "mpd"
bind_to_address "127.0.0.1"
bind_to_address "192.168.x.y"
bind_to_address "2a01:xzy....your IPv6 if you want"

我们将需要编辑输出,但是我们首先需要PulseAudio接收器的名称。

PulseAudio接收器

Avahi / zeroconf非常高兴,因为它将启用AirPlay设备的发现(通过zeroconf / mDNS / Bonjour):

sudo apt-get install avahi

现在,我们可以启动pulseaudio并尝试加载RAOP模块:

pulseaudio --start --log-target=syslog -vvvv --log-level=debug
pacmd load-module module-raop-discover
pacmd list-sinks | grep name:

这是我的设置的输出:

name: <raop_output.Freebox-Player.local>
name: <raop_output.Freebox-Server.local>
name: <raop_output.Freebox-Player.local.2>
name: <raop_output.Freebox-Server.local.2>

然后,您需要/etc/mpd.conf再次编辑并添加以下输出:

audio_output {
    type            "pulse"
    name            "Freebox Player"
    sink            "raop_output.Freebox-Player.local"
    format          "44100:24:1"
}

为您希望将音乐流式传输到的每个AirPlay设备添加这些块之一。

PulseAudio配置

最后一部分是设置PA:

sudo vi /etc/pulse/client.conf

取消注释autospawn = yes,这将使PulseAudio在需要时自动启动。

sudo vi /etc/pulse/default.pa

在底部添加以下行:

load-module module-raop-discover

这将使PulseAudio在启动时加载RAOP发现模块。

最后一步

它应该现在正在工作。启动MPD(如果正在运行,请先停止它):

sudo /etc/init.d/mpd start

稍等一下,我的RasPI至少需要10-15秒才能使守护程序正常运行。

更新您的音乐库(并等待其完成):

sudo apt-get install mpc
mpc update

随意启用输出(以下将列出已配置的MPD输出并启用第一个):

mpc outputs
mpc enable 1

现在,使用您喜欢的MPD客户端播放一些音乐。我ncmpcpp在命令行上使用,而在手机/平板电脑上使用MPDroid。

故障排除

以详细级别启动mpd,以最高日志记录级别启动pulseaudio,并监视日志:

mpd --verbose
pulseaudio --start --log-target=syslog --log-level=debug -vvvv
tail -f /var/log/mpd/mpd.log
tail -f /var/log/syslog

尝试首先使pulseaudio工作。只需加载pulseaudio,加载RAOP发现模块,列出接收器,设置默认接收器并尝试播放一些内容:

paplay /usr/share/sounds/alsa/Front_Center.wav

一旦您可以使用pulseaudio,请尝试使其与MPD一起使用。


1
那正是我想要的!我在Raspberry Pi上运行时不舒服。将尝试此操作并进行更新,以告诉您它是否有效!
leolobato


2

花了一些时间尝试使用Raspbian Jessie在新的Raspberry Pi 3上通过Raop / PulseAudio配置Airplay,但收效甚微。我强烈建议您使用forkd-daapd

这是原始的fork-daapd 0.19(Linux / FreeBSD DAAP(iTunes)媒体服务器)的更新版本,该服务器支持AirPlay设备,Apple Remote(和兼容),MPD,Spotify,mp3流和互联网广播。

安装非常简单,大约10分钟内我就完成了整个工作。下面是安装说明详见这里

1a. If you use Jessie then add this line to /etc/apt/sources.list:
deb http://www.gyfgafguf.dk/raspbian jessie/armhf/
or
1b. If you use Wheezy then add this line to /etc/apt/sources.list:
deb http://www.gyfgafguf.dk/raspbian wheezy-backports/armhf/
2. Run sudo apt-get update and then sudo apt-get install forked-daapd
3. Edit the config file /etc/forked-daapd.conf and (re)start the server with sudo /etc/init.d/forked-daapd restart

Optional - how to add support for Spotify:
1. Add deb http://apt.mopidy.com/ stable main contrib non-free to /etc/apt/sources.list
2. Run sudo apt-get update and then sudo apt-get install libspotify-dev
3. Restart forked-daapd and enter credentials as described in the instructions.
4. Check the log to see how it is working. It should start loading your playlists.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.