Câu hỏi Chia sẻ luồng phát lại âm thanh qua cuộc trò chuyện âm thanh (video) trực tiếp như Skype


Trong các cuộc trò chuyện bằng Skype, tôi thường muốn chia sẻ đầu ra âm thanh (ví dụ: video trên Youtube) với những người khác mà tôi đang nói chuyện.

Vì vậy, tôi đang tìm kiếm một cách để định tuyến đầu ra cho đầu vào ghi âm (để các thành viên khác nghe thấy đầu ra âm thanh), nhưng tôi vẫn có thể nghe thấy bản thân. Hơn nữa tôi muốn vẫn có thể nói chuyện với họ trong khi chia sẻ đầu ra âm thanh với họ.

Tôi sẽ làm như thế nào? Tôi sẽ rất biết ơn!

Một phần câu hỏi của tôi đã được trả lời ở đây: Làm thế nào để Pass / Ghi âm đầu ra âm thanh như một thiết bị đầu vào? (nhưng nó chỉ cho phép thiết lập luồng đầu ra làm đầu vào, không chồng chéo micrô thực)


4
2018-02-14 22:03


gốc




Các câu trả lời:


  1. Kiểm tra id

    $ pactl list short sources
    0   alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor    module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    1   alsa_output.pci-0000_00_1b.0.analog-stereo.monitor  module-alsa-card.c  s16le 2ch 44100Hz   IDLE
    2   alsa_input.pci-0000_00_1b.0.analog-stereo   module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    3   combined.monitor    module-combine-sink.c   s16le 2ch 44100Hz   SUSPENDED
    
    $ pactl list short sinks
    0   alsa_output.pci-0000_01_00.1.hdmi-stereo    module-alsa-card.c  s16le 2ch 44100Hz   RUNNING
    1   alsa_output.pci-0000_00_1b.0.analog-stereo  module-alsa-card.c  s16le 2ch 48000Hz   RUNNING
    2   combined    module-combine-sink.c   s16le 2ch 44100Hz   IDLE
    
  2. Tạo 2 bồn rửa ảo, (Virtual1 mic + nhạc, Virtual2 Âm nhạc)

    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
    
  3. Micrô lặp lại tới Virtual1

    pactl load-module module-loopback latency_msec=1 sink=Virtual1
    
  4. Vòng lặp Virtual2.monitor đến Virtual1

    pactl load-module module-loopback latency_msec=1 sink=Virtual1 source=Virtual2.monitor
    
  5. Vòng lặp Virtual2.monitor tới Analog Stereo (Trong trường hợp của tôi)

    pactl load-module module-loopback latency_msec=1 sink=1 source=Virtual2.monitor
    
  6. Sau đó mở pavucontrol:

    • Thiết bị đầu vào: đặt dự phòng thành Virtual1.monitor hoặc sử dụng CLI:

      pactl set-default-source Virtual1.monitor
      
    • Thiết bị đầu ra: đặt mặc định thành Analog Stereo (Trong trường hợp của tôi) hoặc sử dụng CLI:

      pactl set-default-sink 1
      
    • Ghi âm: xác nhận Skype từ Virtual1.monitor hoặc sử dụng CLI (tôi xóa một số dòng khỏi kết quả, avconv ví dụ như):

      $ pactl list short clients
      23  protocol-native.c   chromium-browser
      24  protocol-native.c   chromium-browser
      45  protocol-native.c   pavucontrol
      237 protocol-native.c   avconv
      239 protocol-native.c   pactl
      
      $ pactl list short source-outputs
      35  0   45  protocol-native.c   float32le 1ch 25Hz
      36  1   45  protocol-native.c   float32le 1ch 25Hz
      37  2   45  protocol-native.c   float32le 1ch 25Hz
      38  3   45  protocol-native.c   float32le 1ch 25Hz
      39  4   45  protocol-native.c   float32le 1ch 25Hz
      41  0   45  protocol-native.c   float32le 1ch 25Hz
      42  1   45  protocol-native.c   float32le 1ch 25Hz
      52  1   45  protocol-native.c   float32le 1ch 25Hz
      54  1   237 protocol-native.c   s16le 2ch 48000Hz
      
      $ pactl move-source-output 54 Virtual1.monitor
      
    • Phát lại: đặt trình phát nhạc thành Virtual2 (Thiết bị null thứ hai), và xác nhận Skype trong Analog Stereo. hoặc thông qua CLI (chromium ví dụ, xem trước pactl list short clients):

      $ pactl list short sink-inputs
      17  3   24  protocol-native.c   s16le 2ch 44100Hz
      58  0   -   module-combine-sink.c   s16le 2ch 44009Hz
      59  1   -   module-combine-sink.c   s16le 2ch 44100Hz
      
      $ pactl move-sink-input 17 Virtual2       
      

Sơ đồ đơn giản (/,\ loopbacks từ trái sang phải):

            Microphone      ---
                               \                   
            Virtual1.mon    ------  Virtual1    >   Skype
                               /  
    VLC   > Virtual2.mon    ------  Virtual2
                               \
    Skype > AnalogSt.mon    ------  AnalogSt    >   Headset

Để chuyển trở lại (sử dụng bình thường), hãy xem Pulseaudio loopback dỡ bỏ thiết bị đầu ra âm thanh

  • Kiểm tra id mô-đun:

    pactl list short modules
    
  • Bỏ tải một mô-đun (hoặc từng cái một)

    pactl unload-module id
    
  • Hoặc (tải lại với các mô-đun mặc định):

    pulseaudio -k
    

Ghi chú:

  • Tôi có bồn rửa chén id (Ví dụ: 1) nhưng nếu bạn muốn làm cho một kịch bản nó tốt hơn để sử dụng tên. (Tôi tránh điều đó ở đây vì chúng dài).

  • Làm cách nào để chuyển sang một đầu ra âm thanh khác trong XFCE? chứa tập lệnh hay để tải luồng id từ tên được sử dụng với move-sink-input và move-source-output.

  • tôi đã sử dụng latency_msec=1 có thể dẫn đến việc sử dụng CPU cao. Trong cuộc trò chuyện âm thanh, bạn có thể không quan tâm đến sự chậm trễ giữa nhạc và micrô. Bạn có thể xóa nó hoặc tăng nó. Nhưng để ghi âm, bạn có thể tìm sự chậm trễ rất nhỏ giữa âm nhạc và micrô.

    Như tôi đã thử nghiệm nó, sự chậm trễ là gần một nửa đến một giây.

  • Tôi nghĩ rằng một số lần khó khăn của nó để tìm ra những gì đang xảy ra như với các công cụ Jack. Nó sẽ được rõ ràng với bản đồ đồ họa:

enter image description here


4
2018-02-15 00:44



Cảm ơn rất nhiều vì câu trả lời. Nhưng tôi có vấn đề: Trước hết trong pavucontrol nó chỉ nói "Monitor of Null Output". Thứ hai, những người tôi đang trò chuyện, phàn nàn về việc nghe tiếng vang của chính họ. Tôi có thể danh sách đen đầu ra của skype cho chuyển hướng âm thanh không? - GEO
Ok, xin lỗi tôi nhớ rằng, tôi đã cập nhật câu trả lời, bây giờ nó cho thấy tên chìm như mô tả trong pavucontrol. pulseaudio -k để đặt lại tất cả thay đổi và bắt đầu lại. bây giờ nó sẽ dễ dàng - user.dz
Theo mặc định nó loopback microhpone, nhưng bạn có thể kiểm tra nó hoạt động.pactl load-module module-loopback source=2 latency_msec=1 sink=1, bạn nên nghe micrô trong tai nghe. sau đó pactl unload-module 30 (30 là id hiển thị khi bạn tải mô-đun. - user.dz
Sneethser: Xin lỗi là không rõ ràng: Cảm ơn tất cả mọi thứ hoạt động, như bạn đã hướng dẫn, nhưng Làm thế nào tôi có thể thay thế các bước trong pavucontrol bằng dòng lệnh? - GEO
Sneethsher: Nevermind, tôi đã thêm pactl unload-module module-loopback - GEO