如何通过WI-FI将我的GNU / Linux音频输出流传输到Android设备?


39

我想通过网络(Wi-Fi)将音频输出流式传输到我的Android设备。我不是在寻找音乐/视频流解决方案,但我会将GNU / Linux桌面的任何音频输出像蓝牙耳机一样流式传输到Android工作中。

我的GNU / Linux桌面是Debian Wheezy,声音由pulseaudio提供。

我已经尝试过Pulseaudio的raop模块(并在paprefs上启用了它)+ Android的AirBuddle应用程序,但是音频没有流式传输(pulseaudio可以连接到AirBuddle,但是声音无法再现,某些软件,某些软件中连接失败其他软件声音卡住)。

Answers:


27

有一个非常简单的解决方案,因为PulseAudio已经拥有所有必需的工具。

  1. 使用命令获取源设备名称 pactl list | grep Name
  2. 创建以下脚本,名为pashare

    #!/bin/sh
    case "$1" in
      start)
        $0 stop 
        pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2 source=<source_name_here> record=true port=8000
        ;;
      stop)
        pactl unload-module `pactl list | grep tcp -B1 | grep M | sed 's/[^0-9]//g'`
        ;;
      *)
        echo "Usage: $0 start|stop" >&2
        ;;
    esac
    
  3. 进行一些检查和准备工作(以允许执行脚本并检查端口是否成功打开):

    chmod 755 pashare
    ./pashare start
    netstat -nlt | grep 8000 
    telnet 127.0.0.1 8000
    
  4. 下载并安装PulseDroid.apk

  5. 在手机上启动应用程序;将IP地址设置为您的计算机并将端口设置为8000

PS您也可以 在Wiki页面上获取有关Pulseaudio网络流的常规信息,以及在Wiki页面上了解RTP流的信息。不要期望通过WiFi流原始音频太多。它需要大量的带宽。即使使用具有强大信号的高端无线路由器/ AP,我也无法获得更多的音频抑制效果。最好的选择可能是设置适当的媒体服务器(例如Rygel,与Pulseaudio配合使用),以将原始音频转码为MP3之类的内容并将其流式传输。


7
这也可以与以下Android应用完美配合:简单协议播放器play.google.com/store/apps/… 请注意,该默认设置为rate = 44100,因此您可能要使用它。
Jannes

1
只是要澄清一下:的输出pactl list sources short 最好找到source参数的编号。
wolfmanx

4
使用pactl list | grep "Monitor Source"显示了更多与我相关的资源。
markroxor

18

您可以使用VLC通过HTTP为Pulseaudio的输出提供MP3流。
主要优点是您不需要在远程设备上安装任何特殊软件,只需要Web浏览器(或音乐播放器)即可播放流。缺点是仅音频,几秒钟的延迟使它对视频无用

  1. 使用以下命令查找pulseaudio的输出名称:

    pactl list | grep "Monitor Source" 
    
  2. 启动VLC http服务器,用您的输出名称替换XXXX:

    cvlc -vvv pulse://XXXX --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
    
  3. 如果需要,请使用以下命令找到您的本地IP地址 ifconfig

  4. 在您的远程设备上,将浏览器(或音频流应用程序)指向:

    http://your.local.ip.address:8888/pc.mp3
    

注意:除非完全将其静音,否则流不受服务器上设置的音量的影响。如果需要,您可以将电平保持在0以上一点,只听到远程设备的声音。


前两个步骤由polynomial_donut组合为一个:

cvlc -vvv pulse://$(pactl list | grep "Monitor Source" | awk '{print $3}') --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'

1
太棒了!会有3秒的延迟,但是我对这个小技巧感到满意,直到找到那条该死的电缆。我可能不得不再买一个...
Slabo

@Slabo好点,由于某种原因,我错误地假设OP仅想流音乐。编辑我的答案
威尔克斯

2
单线而不是前两行: cvlc -vvv pulse://$(pactl list | grep "Monitor Source" | awk '{print $3}') --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
polynomial_donut

流对我来说直接受音量设置的影响。我只是插入耳机以阻止声音从笔记本电脑传出。
罗尔夫

顺便说一句,我如何阻止时滞持续1/2小时?
罗尔夫

9

要将通过wifi的音频输出流传输到android手机,您需要在PC上安装服务器软件,该软件发送音频,并在Android设备上安装客户端软件。可用的选项是

WiFi音频无线扬声器

运行WiFi Audio Android App并按Start,在运行Windows / Linux应用程序之后,您将在底部看到移动设备的IP地址,并将移动设备的IP地址放入IP地址字段,然后在PC应用程序上按Start。现在,所有来自PC的音频都将发送到移动设备,您将在移动设备上听到音频。
下载

声线

将任何音乐或音频从PC无线传输到Android手机,平板电脑或其他PC
主页 另请参阅

其他有用的链接
XBMC android SE


SoundWire延迟1-2秒
Gaurav Gupta

@gauravgupta如果选择较小的缓冲区大小,则不会延迟。也尝试使用压缩。这对我很好。
raacer

您可以在此处放置WiFi Audio的PC应用程序下载链接吗?
禁止

1
WiFi音频无线扬声器已从github上删除,论坛中的编译版本被用户报告为恶意软件。小心!从分布的角度来看,Soundwire看起来也很脏。
Genom

0

对于那些使用Soundwire并从笔记本电脑或PC发送wifi的用户,请使用ifconfig确保使用正确的IP地址。直到今天仍然有效,但是大多数Linux发行版都需要第二个wifi适配器才能发出wifi,而您必须使用将Android连接到的适配器。不是一个接收互联网的人。一个发送出去。

即->如果您使用的是“ A” WiFi适配器连接到Internet,使用“ B”从“ A”发送wifi,则将Android上的SoundWire连接到“ B”而不是“ A”。

如果您连接到不发送wifi的适配器,SoundWire将不会连接或传输,因此请相应地使用terminal命令ifconfig将IP地址输入到您的Andoroid应用程序中。

是的,确实存在滞后,但是此应用SoundLine是最简单的“多重连接到IP并忘记”系统。没有疯狂的菜单。是的,它确实接受多个连接。前几天我用了2。它在发送传输的设备的主窗口中附加与其连接的设备数。

到目前为止,我个人将其用作我的地方的多房间/短距离wifi广播系统。

请享用。


-4

哇,这太老了...

无论如何,请使用VLC。一路漂亮的GUI。

  • 在桌面上启动VLC。
  • 点击流,选择文件(添加所需数量的文件),点击流。
  • 如果一切正确,请点击“下一步”。
  • 对于“新目标”,选择“ http”(或您要使用的任何名称)。如果您也想在流媒体播放器上播放,请选择本地显示。接下来的几个对话都是不言自明的。

在您的Android设备上启动VLC。点击搜索按钮旁边的图标(指向点的箭头)。键入http://<IP ADDRESS O OF THE MACHINE RUNNING VLC>:8080/对我来说,这是http://xxx.ca:8080/

经过测试和工作。现在,可以在13年6月9日的古代做到这一点吗?也许可以,但是我懒得检查VLC的提交日志;)


3
他不是在寻找音乐/视频流解决方案。
Cristian Ciupitu 2014年
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.