如何使用PulseAudio虚拟音频流通过Skype播放音乐?


20

我正在尝试侦听特定进程(A)和另一个进程(B)的音频输出,同时将A的音频输出重定向到B的音频输入。这相当于在听音乐和您的朋友同时让您的朋友能够听到您的声音的同时在Skype中播放音乐。

我已经尝试过在openSUSE(Google“寻找(也许)寻找与Pulse Audio一起使用的混音器”)上的教程,甚至观看了几次视频。以前,我尝试使用JACK只是发现它无法识别我的耳机Logitech G35。

我可以播放音乐,可以有我的朋友,也可以听到,但是不能同时发送声音。是我的声音还是朋友听到的音乐。我也该如何发送声音?

我的设置的一些图片(使用一个Null输出):

播放标签: 在此处输入图片说明

录制标签: 在此处输入图片说明

Answers:


23

经过数小时的修补,我终于实现了!

我创建了两个Null输出,并为第一个创建了两个环回,为第二个创建了一个环回。

pactl load-module module-null-sink sink_name=Virtual1
pactl load-module module-null-sink sink_name=Virtual2
pactl load-module module-loopback sink=Virtual1
pactl load-module module-loopback sink=Virtual1
pactl load-module module-loopback sink=Virtual2

接下来,我打开PulseAudio音量控制(pavucontrol)

这些是我的设置。我按它们出现的顺序键入它们。数字从上到下。

  • 录制标签:

    • 应用范围:
      • 所有应用程序都应从您的耳机/麦克风输入。
      • 除了要将音频发送到的应用程序,应将其设置为以下之一。如果仅要发送音频:空输出1的监视器。它将是列表中的第一个“空输出”。如果要发送音频和声音,请执行以下操作:空输出2的监视器。它将是列表中的第二个“空输出”。
    • 虚拟流:
      • 回送至Null输出(1):耳机/麦克风
      • 环回耳机/麦克风:空输出1.这将是列表中的第一个“空输出”。
      • 回送至Null输出:Null输出1.这将是列表中的第一个“ Null输出”。
  • 播放标签:

    • 应用范围:
      • 所有应用程序都应输出到您的耳机/扬声器。
      • 除了要通过Skype / stream录制/发送的应用程序外,应将其设置为“空输出1”。它将是列表中的第一个“空输出”。
    • 虚拟流:
      • 耳机的环回:空输出2。它将是列表中的第二个“空输出”。
      • 空输出监视器(1)的环回:您的耳机。
      • 空输出(2)的监视器的环回:空输出2。它将是列表中的第二个“空输出”。

11

只是为了不与“空输出”混淆,只需指定如下名称:

pactl load-module module-null-sink sink_name=Virtual1 sink_properties=device.description="NAME HERE (mic+music)"
pactl load-module module-null-sink sink_name=Virtual2 sink_properties=device.description="NAME HERE (only music)"
pactl load-module module-loopback sink=Virtual1
pactl load-module module-loopback sink=Virtual1
pactl load-module module-loopback sink=Virtual2

1

可以比@MikWind提出的改进做得更进一步,并在创建时配置回送设备的源。

我终于有了一个bash脚本来设置所有常量:

#!/bin/bash

MICROPHONE="alsa_input.pci-0000_00_1b.0.analog-stereo"
SPEAKERS="alsa_output.pci-0000_00_1b.0.analog-stereo"

# Create the null sinks
# virtual1 gets your audio source (mplayer ...) only
# virtual2 gets virtual1 + micro
pactl load-module module-null-sink sink_name=virtual1 sink_properties=device.description="virtual1"
pactl load-module module-null-sink sink_name=virtual2 sink_properties=device.description="virtual2"

# Now create the loopback devices, all arguments are optional and can be configured with pavucontrol
pactl load-module module-loopback source=virtual1.monitor sink=$SPEAKERS
pactl load-module module-loopback source=virtual1.monitor sink=virtual2
pactl load-module module-loopback source=$MICROPHONE sink=virtual2

经过数小时的努力使自己无法理解之后,我将自己的研究结果(脚本,文档链接,说明)汇总到了git repo中

我不确定是否清楚是否可以对我以外的其他人有用,但是我希望我自己进行研究时能找到此类文档,所以我建议任何尝试做同样事情的人看一看。

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.