使用Pi将所有音频输出从PC传输到立体声


37

我的问题很简单,但是我一直找不到令人满意的解决方案。

基本上,我希望将Raspberry Pi连接到我的立体声音响,然后播放从计算机通过wifi到PI的任何音频输出。

有什么方法可以轻松地做到这一点,而不必使用特殊的播放器?即PC是否可以将Pi识别为“扬声器”?”

我想听到立体声电脑上PC上的所有声音,即。游戏,音乐,系统声音,通知,YouTube视频等。

非常感谢!

Answers:


24

如果您在PC上运行Linux,那么这是完全可行的,只要在Raspberry Pi和Linux PC上都安装并正确配置PulseAudio。

如果您的PC运行的是Windows ...,请跳至该帖子的末尾(我刚刚更新了该帖子)。

另一种选择是将PulseAudio用作AirPlay接收器/客户端,但是据我所知,这是不可能的。

但是,如果您使用的是Linux,请继续阅读:

注意#1:基于WiFi的PulseAudio可以在某些路由器上正常工作,但在其他路由器上则无法工作。

注意#2:以下说明来自几个Raspberry Pi用户(包括我自己)就该主题进行的对话。

1)在您的Raspberry Pi上安装PulseAudio

sudo apt-get install pulseaudio pulseaudio-module-zeroconf avahi-daemon

2)确保PulseAudio自动启动:

sudo nano /etc/default/pulseaudio

查找PULSEAUDIO_SYSTEM_START条目并将其更改为1,以便看起来像PULSEAUDIO_SYSTEM_START = 1

3)配置PulseAudio通过网络工作:

sudo nano /etc/pulse/system.pa

添加以下行:

加载模块模块本机协议tcp auth-ip-acl = 127.0.0.1; 192.168.1.0/24

加载模块模块zeroconf-发布

4)重新启动Raspberry Pi:

sudo reboot

5)现在,在Linux PC上,安装paprefs。如果您的Linux发行版基于Debian(例如Ubuntu,Mint等),则可以使用以下命令:

sudo apt-get install paprefs

6)运行paprefs并在“ 网络访问”下启用,使可发现的PulseAudio网络声音设备在本地可用

7)在“ 网络服务器”下,启用“ 启用对本地声音设备的网络访问”并选中两个选项(这可能不是必需的,除非您还希望将Linux机器用作服务器/接收器)

8)在Multicas / RTP下启用两个选项

9)检查可用的输出设备(使用Linux发行版音频/混合器应用程序)。您的Raspberry Pi将(应该)出现在列表中;选择它,Linux盒子上播放的所有内容都将重定向到Raspberry Pi。

如果您的Raspberry Pi仍然不可用,请尝试重新启动Linux PC。


更新:将所有音频从Windows发送到Raspberry Pi

您仍然需要按照前面的说明在Raspberry Pi上安装和配置PulseAudio。

现在,这是Windows所需的操作:

1)下载最新版本的LineInCode

2)解压缩下载的文件

2)下载PuTTY的Plink并将plink.exe文件放在提取LineInCode的文件夹中

3)打开记事本并粘贴以下代码:

linco.exe -B 16 -C 2 -R 44100 | plink 192.168.1.104 -l pi -pw raspberry "cat - | pacat --server 127.0.0.1 --playback"

当然,更改IP地址(192.168.1.104),用户名(pi)和密码(raspberry)以匹配您的设置。

4)将文件另存为audio2rpi.bat,与您提取LineInCode的文件夹相同

现在,每当您要将Windows的PC音频流传输到Raspberry Pi时,只需双击audio2rpi.bat文件。


感谢这些说明:http : //ubuntuforums.org/showthread.php?t=1121603


谢谢-我会去的!我也可以使用Pulseaudio从智能手机流式传输吗?谢谢
杰罗姆

@Jerome这应该是您在本网站上提出的另一个问题。
syb0rg

您的Pi上正在运行什么操作系统?我正在运行Raspbmc的全新安装,并且按照以下说明操作似乎已使设备变砖了。重新格式化的好事很容易……
gillonba

我已经在多个Raspbian版本上尝试了这些说明。
xfx

有兴趣知道我们在默认配置tcp模块加载中输入的IP地址。我在无线上播放时出现了一些小故障,但在有线上播放时却出现了故障,这很有趣,因为nethogs仅使用了13 KB / s的报告。
M1ke 2014年

4

我写了一个博客文章,介绍如何使用PC上的PulseAudio和Raspberry Pi上的Raspbmc来使用DLNA / UPnP流。它在这里:http : //westmarch.sjsoft.com/2014/04/streaming-audio-linux-to-raspbmc/。希望能有所帮助。XBMC缓冲时会稍有滞后-因此这可能对游戏或任何事物都不是很好,但对音乐来说效果很好。

这是一堆很长的说明-因此这里有链接,但这是使用DLNA / UPnP对我有用的选项的摘要:

  • apt-get安装rygel
  • 打开PulseAudio首选项,然后在“ 网络服务器 ”下打勾,使本地声音设备可用作DLNA / UPnP媒体服务器,为DLNA / UPnP流创建单独的音频设备
  • /etc/rygel.conf或中编辑Rygel的配置$HOME/.config/rygel.conf,并将其配置为使用发布GstLaunch(请参见下面的配置)
  • 转到您的XBMC文件管理器,浏览到新的源,选择UPnP设备,您应该看到Gst启动选项
  • 然后,您应该能够告诉XBMC播放该流中的音频

这是Rygel使用GstLaunch的配置:

[GstLaunch]
enabled=true
launch-items=mypulseaudiosink
mypulseaudiosink-title=Audio on @HOSTNAME@
mypulseaudiosink-mime=audio/flac
mypulseaudiosink-launch=pulsesrc device=upnp.monitor ! flacenc

您可以在博客文章中加入一组简化的说明,以防将来发生什么情况吗?
2014年

4

想自己从Windows7-> RaspberryPi(OpenElec)进行此操作,偶然发现了您的问题。经过大量研究后,我仍然没有找到令人满意的OpenElec解决方案,但有足够的信息提出了一个非常简单且真正高质量的解决方案,延迟只有大约1秒!

你需要:

  1. VLC Media Player(我在Win7 x64上使用v2.1.3 Rincewind)
  2. 提供“立体声混音”录音设备的声卡(我很幸运能够在板上安装一个)
  3. Raspberry Pi(我使用OpenElec 4.0.5,尽管它通常适用于XBMC)

注意:如果您没有支持此功能的声卡,则可以尝试使用VAC(http://www.virtualaudiocable.net/),尽管我告诉您您对我来说它无法正常工作,音质差和缓冲性差一直存在问题...但是也许只是我。

步骤1)

创建一个批处理文件,该文件在后台启动VLC http流服务并从“ Stereo Mix”记录设备捕获音频:

@echo off

set vlc="C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"
start "" %vlc% --qt-start-minimized dshow:// :dshow-vdev=none :dshow-adev="Stereo Mix (Realtek High Defini" :live-caching=10 :sout=#transcode{vcodec=none,acodec=vorb,ab=500,channels=2,samplerate=44100}:http{dst=:8080/audiostream.ogg} :sout-keep

笔记:

  1. 如果您使用其他名称,则可能需要更改记录设备,因为我已经安装了Audacity(http://audacity.sourceforge.net/)来检查捕获设备的名称
  2. 是的,音频比特率非常高(Vorbis最高),但是比特率越高,缓冲区越快填充,因此延迟越短:-)(您不能在XBMC上明确更改音乐的缓冲区大小,我使用5MB一般在我的缓冲区上)
  3. 我尝试了FLAC,MP3甚至WAV,除了只有MP3和Vorbis可以与我的Pi一起使用之外,我在Pi上的加载时间最快(基本上是即时),而与Vorbis的延迟最少

第2步)

导航

\\ rapsberrypi \ Userdata \播放列表\音乐

并在其中创建一个名称为您选择的.strm文件(我称为mine VLC.strm),其中包含指向您的VLC流的普通链接:(将IP更改为PC的IP:p)

http://192.168.0.1:8080/audiostream.ogg

第三步

现在,您可以在Windows声音设置中将“立体声混音”捕获的音频设备设置为默认设备,或者打开VLC之类的播放器,然后手动使用非默认设备在RaspberryPi上播放音乐:

打开您的VLC(除了托盘中最小化的VLC之外,它正在传输“立体声混音”)并执行以下步骤:

  1. 工具->首选项
  2. 音讯
  3. 输出模块:“ WaveOut音频输出”
  4. 设备:-您的(模拟)设备被“立体声混音”记录设备捕获 -
  5. 保存
  6. 重新启动VLC
  7. 播放音乐

第四步)

在您的RaspberryPi上:

  1. 在XBMC中,导航到“音乐”->“播放列表”
  2. 选择VLC.strm(或您所说的任何东西)
  3. 享受音乐!

故障排除

如果您无法使“立体声混音”正常工作或捕获,请首先在Windows中进行操作,例如使用Audacity进行录制并尝试一些论坛建议,例如:

这个:

http://www.howtogeek.com/howto/39532/how-to-enable-stereo-mix-in-windows-7-to-record-audio/

或这一个:

http://www.sevenforums.com/sound-audio/104497-stereo-mix-enabled-but-no-sound.html

对,今天的打字足够,希望对您有所帮助!

BR,Deads


3

这里描述的“ LineInCode”解决方案可以工作-但是通过wifi发出的声音却很糟糕。上面提供的VLC解决方案也可以使用-但需要大量单击。我将它们合并到一个批处理文件中,该文件将在PC上将VLC作为流媒体启动,而将mpg123作为PI上的“侦听器”启动。对我来说,它就像是一种魅力。您需要在同一文件夹中包含Plik(我们将其用作ssh-client)。从今天开始,我使用此脚本在笔记本电脑上收听mp3,而声音输出为pi:

            REM This is fischteich's start_sound.bat v 0.3
            @echo off

            set vlc="C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"
            set ssh-login=YOURLOGIN
            set ssh-pw=YOURPW
            set this-machine-ip=192.168.XXX.XXX
            set pi-ip=192.168.XXX.XXX
            set use-port=5001

            set start-string= --sout-keep --sout=#transcode{vcodec=none,acodec=mp3,ab=192,channels=2,samplerate=44100}:http{mux=mp3,dst=:%use-port%/}

            REM Start VLC ready for files to play
            @start "vlc" %vlc% %start-string%
            REM Start playback via mpg123 on the Pi!
            plink %pi-ip% -l %ssh-login% -pw %ssh-pw% "mpg123 http://%this-machine-ip%:%use-port%"

1

实现此目的的一种方法是按照此处给出的说明在Raspberry PI(https://volumio.org)上安装Volumio OS 。该发行版包括一个ShairPort接收器,该接收器允许Apple设备向其传输音频。另外,我猜您可以在您选择的发行版上安装Shairport。

在Windows PC上安装tuneblade(http://tuneblade.com),该版本的免费版本允许您将计算机的音频流传输到树莓派上的ShairPort。它也可以与vlc一起使用,以消除观看视频等时的音频延迟。

这对我有用-我希望它也对您有用。


欢迎来到Raspberry Pi Stack Exchange!虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
RPiAwesomeness

Tuneblade还可以与Pi MusicBox配合使用
输入

0

据我所知,还没有解决方案。有一种名为AVB的标准/技术,但计划为802.11提供的支持仅限于时间同步。


-1

您是否使用连接到立体声的A2DP适配器尝试了简单的蓝牙音频流传输?使用Raspberry Pi做到这一点似乎有些大材小用,尽管我承认要使用Raspberry Pi和便宜的USB蓝牙适配器来构建A2DP蓝牙音频流设备。


您构建了可以流式传输A2DP的Raspi真是太好了,但是您的答案并不能帮助我做到这一点,因此,该答案不是答案。
Mark Booth

没有。将PC与Bluetooth接收器配对,然后将声音直接从PC发送到固醇。蓝牙接收器应在您的PC上显示为声音输出。
Christopher Biggs'4
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.