web-dev-qa-db-ja.com

PulseAudio仮想オーディオストリームを使用してSkypeで音楽を再生するにはどうすればよいですか?

特定のプロセス(A)と別のプロセス(B)の音声出力を聞きながら、Aの音声出力をBの音声入力にリダイレクトしようとしています。これは、音楽と友人の両方を聴きながら、Skypeで音楽を再生し、友人にあなたの声を聞かせることと同じです。

私はopenSUSEのチュートリアル(Google "Pulse Audioで使用するためのオーディオミキサーを探している(たぶん)")を試し、ビデオを数回見ました。以前、JACKを試してみましたが、ヘッドセットであるLogitech G35が認識されないことがわかりました。

私は音楽を演奏することができ、友人と一緒にそれを聞くことができますが、同時に声を送ることはできません。友達が聞くのは私の声か音楽のどちらかです。どうすれば音声を送信できますか?

私のセットアップのいくつかの写真(1つのヌル出力を使用):

再生タブ: enter image description here

記録タブ: enter image description here

19
Jake Thompson

何時間もいじくり回した後、ついに達成しました!

2つのNull出力を作成し、最初のループバックを2つ、2つ目のループバックを1つ作成しました。

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 Volume Control(pavucontrol)を開きました

これらは私の設定です。表示される順に入力しました。数字は上から下に行きます。

  • 記録タブ:

    • アプリケーション:
      • すべてのアプリケーションは、ヘッドセット/マイクから入力する必要があります。
      • オーディオを送信するアプリケーションを除き、次のいずれかに設定する必要があります。オーディオのみを送信する場合:ヌル出力のモニター1.リストの最初の「ヌル出力」になります。オーディオと音声の両方を送信する場合:ヌル出力のモニター2。これはリストの2番目の「ヌル出力」になります。
    • 仮想ストリーム:
      • ヌル出力へのループバック(1):ヘッドセット/マイク
      • ヘッドセット/マイクへのループバック:ヌル出力1.リストの最初の「ヌル出力」になります。
      • ヌル出力へのループバック:ヌル出力1.リストの最初の「ヌル出力」になります。
  • 再生タブ:

    • アプリケーション:
      • すべてのアプリケーションは、ヘッドセット/スピーカーに出力する必要があります。
      • Skype /ストリームを介して記録/送信するアプリケーションをNull出力1に設定する必要がある場合を除き、リストの最初の「Null出力」になります。
    • 仮想ストリーム:
      • ヘッドセットのループバック:ヌル出力2.リストの2番目の「ヌル出力」になります。
      • ヌル出力のモニターのループバック(1):ヘッドセット。
      • ヌル出力のモニターのループバック(2):ヌル出力2。これはリストの2番目の「ヌル出力」になります。
22
Jake Thompson

「null出力」と混同しないように、次のように名前を指定します。

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
11
MikWind

@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 にまとめました。

私以外の誰にも役立つかどうかはわかりませんが、自分で調べたときにこの種のドキュメントを見つけてほしいので、同じようなことをしようとしている人にはお勧めしますご覧ください。

1
toadjaune