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

use*_*834 22 android pulseaudio streaming

我有一部未使用的 HTC Hero Android 手机(运行 Android OS 2.1),我想将它连接到音频放大器并保持连接数月,这样我就可以将这款 android 手机用作远程脉冲音频服务器/接收器等。

Android Market 上有“远程音频”应用程序,可以从 /dev/dsp 获取流。/dev/dsp在 ubuntu 10.10 中被错误禁用/无论出于何种原因,甚至在我按照此线程启用它之后 - 按照这些说明操作后它没有帮助,所以当我点击我的 android 上的播放/暂停按钮时 - 没什么发生了 mpg123 song.mp3 仍然使用我的笔记本电脑扬声器。最后 | head 甚至没有显示这个新用户登录(我想它应该出现在这里?)

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

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

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

小智 20

两天前,我偶然发现了这个问题,但无法正确回答。最终我在 AirBubble 手册中读到 RAOP 不受支持。

我终于用pulseaudio的DLNA/UPnP功能解决了这个问题。它就像您期望的那样工作。您可以使用任何带有脉冲音频输出的应用程序播放声音,并在您希望将其重定向到您的 Android 设备时选择流媒体输出。

首先,安装 Rygel:

$ sudo apt-get install rygel rygel-preferences rygel-gst-launch
Run Code Online (Sandbox Code Playgroud)

然后修改 /etc/rygel.conf 文件,使带有参数 enable-transcoding 的行看起来像这样:

enable-transcoding=false
Run Code Online (Sandbox Code Playgroud)

然后加载 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
Run Code Online (Sandbox Code Playgroud)

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

请记住,BubbleUPnP 免费流式传输前 30 分钟。完整版是 3,49 欧元,但我想它物有所值。我没有得到任何其他应用程序为我工作。

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

$ rygel-preferences
Run Code Online (Sandbox Code Playgroud)

还有一个注意事项:这直接流式传输原始 LPCM 数据,该数据始终约为 250 kB/s。如果您使用的不是 802.11 n 网络,任何虚假的 WLAN 活动都会导致卡顿。如果您打算将您的娱乐解决方案基于无线流媒体,请考虑购买无线路由器。

跟进:转码

为了减少网络开销和卡顿(除非您使用 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
Run Code Online (Sandbox Code Playgroud)

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

跟进 2:FLAC

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

mypulseaudiosink-mime=audio/flac
mypulseaudiosink-launch=pulsesrc device=upnp.monitor ! flacenc quality=8
Run Code Online (Sandbox Code Playgroud)

这将流减少到大约 100 kB/s,允许在大多数具有多个用户的 802.11g 网络上流畅播放。我在下载 torrent 时对其进行了测试。全速运行时会有些卡顿,但是当我将下载速度限制在低于最大带宽 200 kB/s 左右时,它又变得流畅了。

此外,您还消除了任何质量损失。


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

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

然而,对我有用的是遵循所有说明(没有水槽创建)。然后运行paprefs,并在“网络服务器”选项卡上,选择底部选项“使本地声音设备可用作 uPnP 服务器”(也许还需要子选项)。

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

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

  • 对于关于使用 rygel 的海报:该方法看起来很合理,但 module-null-sink 在 11.10 版本中没有采用这些参数。您一定是指另一个模块,但我还找不到它。好主意,请帮助纠正。 (3认同)

Oli*_*Oli 13

我认为你的想法过度了,试图让你的手机做一些它从未打算做的事情(连接到 PulseAudio 或者更底层的东西)。让您的计算机完成繁重的工作。

我建议使用像 Icecast(这里的教程)之类的东西,并使用可以流式传输它的 30 多个 Android 应用程序之一。