Làm cách nào tôi có thể sử dụng luồng âm thanh ảo PulseAudio để phát nhạc qua Skype?


20

Tôi đang cố gắng lắng nghe đầu ra âm thanh của một quy trình cụ thể (A) và một quy trình khác (B) trong khi chuyển hướng đầu ra âm thanh của A sang đầu vào âm thanh của B. Điều này sẽ tương đương với việc phát nhạc vào Skype trong khi nghe cả nhạc và bạn của bạn và bạn của bạn có thể nghe thấy bạn.

Tôi đã thử làm theo hướng dẫn trên openSUSE (Google "Tìm kiếm (có thể) cho bộ trộn âm thanh để sử dụng với Pulse Audio") về nó và thậm chí đã xem video nhiều lần. Trước đây tôi đã thử JACK chỉ để tìm ra nó sẽ không nhận ra tai nghe của tôi, Logitech G35.

Tôi có thể phát nhạc, có cả bạn bè và tôi nghe thấy nhưng tôi không thể gửi giọng nói của mình cùng một lúc. Đó là giọng nói của tôi hoặc âm nhạc mà bạn tôi nghe. Làm thế nào tôi cũng có thể gửi giọng nói của tôi?

Một số hình ảnh về thiết lập của tôi (sử dụng một đầu ra Null):

Tab phát lại: nhập mô tả hình ảnh ở đây

Tab ghi âm: nhập mô tả hình ảnh ở đây

Câu trả lời:


23

Sau nhiều giờ mày mò cuối cùng tôi cũng đạt được nó!

Tôi đã tạo hai đầu ra Null và tạo hai loopback cho vòng lặp thứ nhất và một vòng lặp thứ hai.

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

Tiếp theo tôi đã mở PulseAudio Volume Control (pavucontrol)

Đây là những thiết lập của tôi. Tôi gõ chúng theo thứ tự chúng xuất hiện. Số đi từ lên xuống.

  • Tab ghi âm:

    • Các ứng dụng:
      • Tất cả các ứng dụng nên nhập từ tai nghe / micrô của bạn.
      • Ngoại trừ (các) ứng dụng bạn muốn gửi âm thanh nên được đặt thành một trong những điều sau đây. Nếu bạn CHỈ muốn gửi âm thanh: Monitor of Null Output 1. Đây sẽ là "Đầu ra Null" đầu tiên trong danh sách. Nếu bạn muốn gửi cả âm thanh và giọng nói của mình: Monitor of Null Output 2. Đây sẽ là "Đầu ra Null" thứ hai trong danh sách.
    • Luồng ảo:
      • Loopback to Null Output (1): Tai nghe / micrô của bạn
      • Lặp lại tai nghe / micrô của bạn: Đầu ra Null 1. Đây sẽ là "Đầu ra không" đầu tiên trong danh sách.
      • Loopback to Null Output: Null Output 1. Đây sẽ là "Đầu ra Null" đầu tiên trong danh sách.
  • Tab phát lại:

    • Các ứng dụng:
      • Tất cả các ứng dụng sẽ xuất ra tai nghe / loa của bạn.
      • Ngoại trừ (các) ứng dụng bạn muốn ghi / gửi qua Skype / stream nên được đặt thành Null Output 1. Đây sẽ là "Đầu ra Null" đầu tiên trong danh sách.
    • Luồng ảo:
      • Loopback của tai nghe của bạn: Null Output 2. Đây sẽ là "Đầu ra Null" thứ hai trong danh sách.
      • Loopback of Monitor of Null Output (1): Tai nghe của bạn.
      • Loopback of Monitor of Null Output (2): Null Output 2. Đây sẽ là "Đầu ra Null" thứ hai trong danh sách.

11

chỉ để không bị nhầm lẫn với "null đầu ra", chỉ cần chỉ định các tên như thế này:

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

Có thể đi xa hơn cả cải tiến được đề xuất bởi @MikWind và định cấu hình nguồn của các thiết bị loopback tại thời điểm tạo.

Cuối cùng tôi đã có một tập lệnh bash để thiết lập mọi thứ không đổi:

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

Bản thân tôi đã phải vật lộn vài giờ trước khi đủ hiểu để làm cho nó hoạt động, tôi đã biên soạn kết quả nghiên cứu của mình (kịch bản, liên kết tài liệu, giải thích) trong một repo git .

Tôi không chắc liệu nó có đủ rõ ràng để hữu ích cho bất kỳ ai khác ngoài tôi không, nhưng tôi ước tôi tìm thấy loại tài liệu này khi tôi thực hiện nghiên cứu của riêng mình, vì vậy tôi khuyên mọi người nên thử làm những thứ tương tự có một cái nhìn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.