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

Jak*_*son 29 sound pulseaudio skype 12.04 pavucontrol

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

我已经尝试按照关于它的 openSUSE 教程(谷歌“寻找(也许)用于与脉冲音频一起使用的音频混合器”),甚至多次观看视频。我之前尝试过 JACK 却发现它无法识别我的耳机 Logitech G35。

我能够播放音乐,让我的朋友和我都听到它,但我不能同时发送我的声音。不是我的声音就是我朋友听到的音乐。我怎样才能发送我的声音?

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

播放选项卡: 在此处输入图片说明

录音选项卡: 在此处输入图片说明

Jak*_*son 29

经过几个小时的修修补补,我终于做到了!

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

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
Run Code Online (Sandbox Code Playgroud)

接下来我打开PulseAudio Volume Control (pavucontrol)

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

  • 录音选项卡:

    • 应用:
      • 所有应用程序都应从您的耳机/麦克风输入。
      • 除了要将音频发送到的应用程序外,应设置为以下之一。如果您只想发送音频:空输出监视器 1。它将是列表中的第一个“空输出”。如果您想同时发送音频和语音:Null Output 2 的监视器。它将是列表中的第二个“Null Output”。
    • 虚拟流:
      • Loopback to Null 输出 (1):您的耳机/麦克风
      • 回送至您的耳机/麦克风:空输出 1。它将是列表中的第一个“空输出”。
      • Loopback to Null Output:Null Output 1。它将是列表中的第一个“Null Output”。
  • 播放选项卡:

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


Mik*_*ind 14

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

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
Run Code Online (Sandbox Code Playgroud)


小智 8

有可能比@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
Run Code Online (Sandbox Code Playgroud)

我在理解到足以使其工作之前挣扎了几个小时,我在git repo 中编译了我的研究结果(脚本、文档链接、解释)。

我不确定它是否足够清晰以对我以外的任何人有用,但我希望我在做自己的研究时找到这种文档,所以我建议任何人尝试做同样的事情看一看。