Bagaimana saya bisa menggunakan stream audio virtual PulseAudio untuk memutar musik melalui Skype?

20

Saya mencoba mendengarkan output audio dari proses tertentu (A) dan proses lain (B) sambil mengarahkan output audio A ke input audio B. Ini akan sama dengan memutar musik ke Skype sambil mendengarkan musik dan teman Anda dan membuat teman Anda dapat mendengarkan Anda.

Saya telah mencoba mengikuti tutorial tentang openSUSE (Google "Mencari (mungkin) untuk mixer audio untuk digunakan dengan Pulse Audio") tentang hal itu dan bahkan menonton video beberapa kali. Saya sebelumnya mencoba JACK hanya untuk mengetahui itu tidak mengenali headset saya, Logitech G35.

Saya dapat memutar musik, memiliki teman saya dan saya mendengarnya tetapi saya tidak dapat mengirim suara saya pada saat yang sama. Baik suara saya atau musik yang didengar teman saya. Bagaimana saya bisa mengirim suara saya?

Beberapa gambar pengaturan saya (menggunakan satu Null Output):

Tab pemutaran: masukkan deskripsi gambar di sini

Tab rekaman: masukkan deskripsi gambar di sini

Jake Thompson
sumber

Jawaban:

23

Setelah bermain-main selama berjam-jam akhirnya saya berhasil!

Saya membuat dua Output Null dan membuat dua loopback untuk yang pertama dan satu loopback untuk yang kedua.

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

Selanjutnya saya membuka PulseAudio Volume Control (pavucontrol)

Ini adalah pengaturan saya. Saya mengetiknya sesuai urutan kemunculannya. Angka berubah dari atas ke bawah.

  • Tab rekaman:

    • Aplikasi:
      • Semua aplikasi harus diinput dari headset / mikrofon Anda.
      • Kecuali aplikasi yang ingin Anda kirimi audio harus diatur ke salah satu dari yang berikut ini. Jika Anda HANYA ingin mengirim audio: Monitor Output Null 1. Ini akan menjadi "Output Null" pertama dalam daftar. Jika Anda ingin mengirim audio dan suara Anda: Pantau Output Null 2. Ini akan menjadi "Output Null" kedua dalam daftar.
    • Streaming Virtual:
      • Loopback ke Null Output (1): Headset / mikrofon Anda
      • Loopback ke headset / mikrofon Anda: Null Output 1. Ini akan menjadi "Null Output" pertama dalam daftar.
      • Loopback ke Null Output: Null Output 1. Ini akan menjadi "Null Output" pertama dalam daftar.
  • Tab pemutaran:

    • Aplikasi:
      • Semua aplikasi harus di-output ke headset / speaker Anda.
      • Kecuali aplikasi yang ingin Anda rekam / kirim melalui Skype / stream harus disetel ke Null Output 1. Ini akan menjadi "Null Output" pertama dalam daftar.
    • Streaming virtual:
      • Loopback headset Anda: Null Output 2. Ini akan menjadi "Null Output" kedua dalam daftar.
      • Loopback Monitor Output Null (1): Headset Anda.
      • Loopback Monitor Output Null (2): Null Output 2. Ini akan menjadi "Null Output" kedua dalam daftar.
Jake Thompson
sumber
11

hanya untuk tidak menjadi bingung dengan "null Output", cukup tentukan nama-nama seperti ini:

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
MikWind
sumber
1

Dimungkinkan untuk melangkah lebih jauh dari peningkatan yang diusulkan oleh @MikWind, dan mengonfigurasi sumber perangkat loopback pada waktu pembuatan.

Saya akhirnya mendapatkan skrip bash untuk mengatur semua yang konstan:

#!/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

Setelah saya berjuang beberapa jam sebelum cukup memahami untuk membuatnya bekerja, saya menyusun hasil penelitian saya (skrip, tautan dokumentasi, penjelasan) dalam git repo .

Saya tidak yakin apakah cukup jelas untuk berguna bagi orang lain selain saya, tetapi saya berharap saya menemukan dokumentasi semacam ini ketika saya melakukan penelitian sendiri, jadi saya akan merekomendasikan siapa pun yang mencoba melakukan hal yang sama untuk lihat.

toadjaune
sumber