如何使用Android 2.1手机作为远程音频接收器?


21

我有一部未使用的HTC Hero Android手机(运行Android OS 2.1),我想将其连接到音频放大器并保持连接状态数月,因此我可以将此Android手机用作远程Pulseaudio服务器/接收器/等。

Android Market上提供了“远程音频”应用程序,可以从/ dev / dsp中获取流。/ dev / dsp 已被错误/无论出于何种原因在ubuntu 10.10中禁用,即使我按照此线程启用了它-按照这些说明操作也无济于事,所以当我单击android上的Play / Pause按钮时-真的没有发生并且mpg123 song.mp3仍然使用我的笔记本电脑扬声器。最后 head甚至不显示此新用户登录(我想它应该出现在这里?)

通过“ pulseaudio”搜索,我在Android市场上找到了Airbubble,但它说“不适用于MacOS X上的RaopX和Linux上用于Pulseaudio的raop模块”。(C)

那么,有没有一种方法可以将Android手机用作远程音频接收器,理想情况下不仅限于播放mp3 /音乐-还可以使用声音子系统吗?

当然,我不是唯一希望通过wi-fi将音频广播到android手机以在适当的扬声器上收听音频的人吗?

Answers:


13

我认为您正在过度构思,试图使您的电话执行从未打算执行的操作(连接到PulseAudio或更底层的操作)。使您的计算机完成艰苦的工作。

我建议您使用Icecast之类的东西(此处的教程),并使用可以流式传输的30多种Android应用程序之一。


谢谢,但是Android市场上至少有两个应用程序可以完全解决我的问题:“远程音频”和“ AirBubble”(与Apple AirportExpress兼容)。
2011年

@ user35834:在Ubuntu端设置Icecast服务器后,您将在接收端独立。任何可以调到“ Internet广播”的内容(!)都将能够接收您自己的流。Icecast与RAOP相比,还有许多其他优点。
塔卡特2011年

19

两天前,我偶然发现了这个问题,无法解决。最终,我在AirBubble手册中阅读到不支持RAOP的信息。

我终于用Pulseaudio的DLNA / UPnP功能解决了它。就像您期望的那样工作。您可以在盒子上使用任何具有pulseaudio输出的应用播放声音,并在需要将其重定向到Android设备时选择流输出。

首先,安装Rygel:

$ sudo apt-get install rygel rygel-preferences rygel-gst-launch

然后更改文件/etc/rygel.conf,以使带有参数enable-transcoding的行如下所示:

enable-transcoding=false

然后加载DLNA和TCP模块并启动rygel:

$ pactl load-module module-http-protocol-tcp
$ pactl load-module module-rygel-media-server 
$ pactl load-module module-null-sink sink_name=upnp format=s16be channels=2 rate=44100 sink_properties="device.description='DLNA/UPnP Streaming' device.bus='network' device.icon_name='network-server'"
$ rygel

在您的Android设备上,下载应用程序BubbleUPnP。您的Pulseaudio输出设备将列在服务器“%HOSTNAME%上的声音”下。在声音首选项中将计算机上的输出定向到DLNA设备。在BubbleUPnP中选择相同的输出。

请记住,BubbleUPnP会在前30分钟内免费提供流媒体播放。完整版价格为3,49欧元,但我认为这是值得的。我没有任何其他应用可以为我工作。

最后,如果您不喜欢使用rygel-preferences,可以禁用媒体浏览器:

$ rygel-preferences

另一个提示:这将直接流送原始LPCM数据,该数据恒定为〜250 kB / s。如果您使用的不是802.11 n网络,则任何虚假的WLAN活动都会导致卡顿。如果您打算将娱乐解决方案基于无线流,请考虑购买无线n路由器。

后续行动:转码

为了减少网络开销和卡顿现象(除非您使用802.11 n网络,否则这会发生),可以将音频流转码为mp3。

将此粘贴到〜/ .config / rygel.conf

[GstLaunch]
enabled=true
launch-items=mypulseaudiosink
mypulseaudiosink-title=Sound on @HOSTNAME@
mypulseaudiosink-mime=audio/mpeg
mypulseaudiosink-launch=pulsesrc device=upnp.monitor ! lamemp3enc target=quality quality=6

使用“ Gst Launch” DLNA服务,该服务现在将在您启动rygel时出现。

跟进2:FLAC

LAME最多可能导致2分钟(!)的延迟。另一方面,FLAC的速度非常快,通常为一秒以下。将以上示例中的行更改为:

mypulseaudiosink-mime=audio/flac
mypulseaudiosink-launch=pulsesrc device=upnp.monitor ! flacenc quality=8

这样可以将流降低到大约100 kB / s,从而可以在具有多个用户的大多数802.11g网络上流畅播放。我在下载种子时进行了测试。在全速下,会有一些卡顿现象,但是当我将下载速度限制在最大带宽以下200 kB / s左右时,它又再次变得平稳。

另外,您还消除了质量损失。


上面的几个问题-请检查并编辑~/.config/rygel.conf/etc/.config/rygel.conf如果默认情况下未加载它(?)。

接收器创建不适用于更高版本的Ubuntu。

但是,对我有用的是遵循所有说明(不创建接收器)。然后运行paprefs,然后在“网络服务器”选项卡上,选择底部选项“将本地声音设备用作uPnP服务器”(也许还需要该子选项)。

启动rygel,然后在PulseAudio设置中选择新的“ DLNA / UPnP流”选项。

在BubbleUPnP上,选择“ Gst Launch”作为库。在应用程序中,选择“库”,现在顶部应该有一个名为“ Sound on”的选项。


3
对于有关使用rygel的发贴人:这种方法听起来不错,但是module-null-sink在11.10版本中不接受这些参数。您必须指的是另一个模块,但我找不到它。好主意,请通过纠正提供帮助。

运行后pactl load-module module-null-sink sink_name=upnp......,出现此错误:Failure: Module initalization failed。任何的想法?
Khurshid Alam 2013年

@KhurshidAlam:尝试我的方法,它没有文本编辑功能,仅依赖于正在安装的Wine。
Janus Troelsen

@JanusTroelsen:虽然您的方法确实可行,但我要强调的是,首先尝试其他方法。葡萄酒是一个伟大的项目,但只能作为不得已的手段。这是不可靠的。
Toasty 2013年

1

Shairplay不支持TCP,raop_play(我认为pulseaudio-module-raop基于此)不支持UDP。为什么raop仅是TCP很奇怪,所以UDP从表面上看似乎是一个更简单,更适合的协议。

而且,如果您的资源很不稳定,则通过MP3进行的冰播会破坏质量,而且更像是CPU消耗。MPD本机支持pulseaudio输出,因此您可以使用带有mpdroid应用程序的android手机“打开和关闭”房屋的不同房间。如果您可以将airplay扩展坞用作端点,则将有一个很棒的设置。但是您不能cos raop不支持更简单的UDP端点!


1

您可能想在Pulseaudio社区之外看看。

我正在尝试Subsonic来做到这一点。到目前为止,它运行良好。我已将其安装在我的Ubuntu系统,客厅Roku,主要的Android手机和仅带wifi的次要Android手机上。所有这些设备都通过wifi连接。我还计划将其安装在Windows机器上,以便我的妻子可以将其iTunes收藏集流式传输到其他设备。

现在,我可以将音频和视频从Ubuntu系统流式传输到客厅中的Roku,或流式传输到厨房或折叠衣物时使用的Android。我还可以从任何具有Web浏览器的计算机上进行流式传输。在进行长期无聊的房屋维护项目时,我会播放音乐和播客。

到目前为止,效果很好。


0

您可以在服务器上使用Foobar2000 ,在客户端上使用BubbleUPnP(付费软件)。

  1. 拿酒
  2. 得到 foobar_v1.2.5.exe
  3. $ wine foobar2000_v1.2.5.exe
  4. 下一个,下一个,下一个... :)
  5. 得到foo_upnp
  6. 解压foobar2000的components文件夹(可能位于中~/.wine/drive_c/Program Files/
  7. 启动foobar2000
  8. 转到库→配置→播放→输出→设备,然后选择“空输出”
  9. 确保ufw没有阻止相关流量
  10. 在BubbleUPnP中:
    1. 转到设备→库,然后选择foobar2000服务器
    2. 在“库”中,选择“播放流捕获”

这种方法的优势在于,如果您在Android上暂停,它将累积一个缓冲区(因为服务器仍在发送)。

在Ubuntu(Wine版本1.5.28-0ubuntu1~ppa1,foobar2000版本1.2.5和foo_upnp版本0.99.46)和Windows上进行了测试。

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.