سؤال مشاركة دفق تشغيل الصوت من خلال محادثة صوتية (فيديو) مباشرة مثل Skype


في المحادثات التي تستخدم Skype ، غالباً ما أريد مشاركة مخرجات الصوت (مثل فيديو يوتيوب) مع أشخاص آخرين أتحدث معهم.

لذلك أنا أبحث عن طريقة لتوجيه الإخراج إلى إدخال التسجيل (بحيث يسمع الأعضاء الآخرون إخراج الصوت) ، لكن ما زال بإمكاني سماع الإخراج بنفسي. علاوة على ذلك ، أريد الاستمرار في التحدث معهم أثناء مشاركة الإخراج الصوتي معهم.

كيف لي أن افعل ذلك؟ سأكون شاكرا جدا!

تم الإجابة على جزء من سؤالي هنا: كيف يتم تمرير / تسجيل خرج الصوت كجهاز إدخال؟ (ولكنه يسمح فقط بتعيين دفق الإخراج كمدخل ، دون تداخل الميكروفون الحقيقي)


4
2018-02-14 22:03


الأصل




الأجوبة:


  1. تحقق من الهوية

    $ 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. اصنع حوضين افتراضيين ، (Virtual1 الموسيقى + هيئة التصنيع العسكري، Virtual2 موسيقى)

    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. استرجاع الميكروفون ل Virtual1

    pactl load-module module-loopback latency_msec=1 sink=Virtual1
    
  4. الاسترجاع Virtual2.monitor إلى Virtual1

    pactl load-module module-loopback latency_msec=1 sink=Virtual1 source=Virtual2.monitor
    
  5. الاسترجاع Virtual2.monitor إلى Stereo Stereo (في حالتي)

    pactl load-module module-loopback latency_msec=1 sink=1 source=Virtual2.monitor
    
  6. ثم افتح pavucontrol:

    • جهاز الإدخال: ضبط التراجع إلى Virtual1.monitor أو باستخدام CLI:

      pactl set-default-source Virtual1.monitor
      
    • أجهزة الإخراج: تعيين الافتراضي إلى ستيريو التناظرية (في حالتي) أو باستخدام CLI:

      pactl set-default-sink 1
      
    • التسجيل: تأكيد Skype من Virtual1.monitor أو باستخدام CLI (أقوم بإزالة بعض الأسطر من النتائج ، avconv على سبيل المثال):

      $ 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
      
    • التشغيل: تعيين مشغل الموسيقى على Virtual2 (2nd null device) ، وتأكيد Skype في Analog Stereo. أو من خلال CLI (chromium كمثال ، انظر السابق 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       
      

مخطط بسيط/،\ استرجاع من اليسار إلى اليمين):

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

للتبديل مرة أخرى (الاستخدام العادي) ، انظر Pulseaudio loopback تفريغ أجهزة إخراج الصوت

  • تحقق من معرف الوحدة النمطية:

    pactl list short modules
    
  • إلغاء وحدة واحدة (أو واحد تلو الآخر)

    pactl unload-module id
    
  • أو (إعادة التحميل باستخدام الوحدات الافتراضية):

    pulseaudio -k
    

ملاحظات:

  • لدي استخدام بالوعة id (على سبيل المثال: 1) ولكن إذا كنت تريد إنشاء برنامج نصي ، فمن الأفضل استخدام الأسماء. (أنا تجنب ذلك هنا لأنها طويلة).

  • كيف يمكنني التبديل إلى مصدر إخراج صوت آخر في XFCE؟ يحتوي على نص لطيف للحصول على البث id من الاسم المراد استخدامه مع move-sink-input و move-source-output.

  • لقد استعملت latency_msec=1 مما قد يؤدي إلى استخدام وحدة المعالجة المركزية عالية. في المحادثة الصوتية ، قد لا تهتم بالتأخير بين الموسيقى والميكروفون. يمكنك إزالته أو زيادته. ولكن بالنسبة إلى مزيج التسجيل ، قد تبحث عن تأخير صغير جدًا بين الموسيقى والميكروفون.

    كما اختبرت ، فإن التأخير يقترب من نصف إلى ثانية واحدة.

  • أعتقد أنه من الصعب في بعض الأحيان معرفة ما يحدث مع أدوات جاك. سيكون واضحًا مع الخريطة الرسومية:

enter image description here


4
2018-02-15 00:44



شكرا جزيلا للإجابة. لكنني أواجه مشكلات: أولاً وقبل كل شيء في pavucontrol فإنه يقول فقط "مراقبة ناتج Null". ثانياً ، الناس الذين أتحادث معهم ، يشتكون من سماع صدى خاص بهم. هل يمكنني إدراج مخرجات Skype في القائمة السوداء لإعادة التوجيه الصوتي؟ - GEO
حسنا ، آسف ، أفتقد ذلك ، لقد قمت بتحديث الإجابة ، والآن يظهر أسماء بالوعة كما وصف في pavucontrol. pulseaudio -k لإعادة كل التغيير والبدء من جديد. يجب أن تكون سهلة الآن - user.dz
افتراضيًا ، يمكنك استرجاع microhpone ، ولكن يمكنك اختباره.pactl load-module module-loopback source=2 latency_msec=1 sink=1، يجب أن تسمع الميكروفون في سماعة الرأس. ثم pactl unload-module 30 (30 هو الرقم الذي يظهر عند تحميل الوحدة. - user.dz
Sneethser: نأسف لعدم التوضيح: شكرًا لك ، كل شيء يعمل ، كما أشرت ، ولكن كيف يمكنني استبدال الخطوات في pavucontrol بسطر الأوامر؟ - GEO
Sneethsher: Nevermind ، أضفت pactl unload-module module-loopback - GEO