当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

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

Android Market 上有 “Remote Audio” 应用程序,可以从 /dev/dsp 获取流。 /dev/dsp has been disabled 错误/无论什么原因在 ubuntu 10.10 中,甚至在我按照 this thread 启用它之后 – 在跟随 these instructions 之后它没有帮助,所以当我点击我的 android 上的播放/暂停按钮时 – 什么都没有发生,mpg123 歌曲.mp3 仍然使用我的笔记本电脑扬声器。最后 | head 甚至没有显示这个新用户登录(我想它应该出现在这里?)

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

那么有没有一种方法可以将 Android 手机用作远程音频接收器,理想情况下不仅限于播放 mp3/音乐——而是一般的 Sound sub-system?

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

最佳方法

我认为你是 over-working 这个想法,试图让你的手机做一些它从来没有打算做的事情(连接到 PulseAudio 或者更底层的东西)。让您的计算机完成繁重的工作。

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

次佳方法

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

我终于用pulseaudio的DLNA/UPnP功能解决了这个问题。它就像您期望的那样工作。您可以使用任何带有脉冲音频输出的应用程序播放声音,并在您希望将其重定向到您的 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

还有一个 heads-up:它直接流式传输原始 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

使用 “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 网络上流畅播放。我在下载 torrent 时对其进行了测试。全速运行时会有些卡顿,但是当我将下载速度限制在低于最大带宽 200 kB/s 左右时,它又变得流畅了。

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


上述几个问题 – 检查并编辑 ~/.config/rygel.conf,如果默认情况下未加载 /etc/.config/rygel.conf(?)。

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

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

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

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12131.html,未经允许,请勿转载。