问题描述
我有一部未使用的 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” 作为库。在应用程序中,选择库,现在顶部应该有一个名为“声音打开”的选项。