المؤتمر الصوتي - كيفية الحصول على المزيد من الناس في محادثة؟

StackOverflow https://stackoverflow.com/questions/2207642

  •  18-09-2019
  •  | 
  •  

سؤال

بادئ ذي بدء، أنا مجرد هواية، لذلك أنا آسف إذا كان هذا سؤال غبي أو إذا كنت ساذجا للغاية. (وهذا يعني أيضا أنه لا يمكنني شراء مكتبات باهظة الثمن)

هذا هو الموقف: أنا بناء تطبيق دردشة صوت بسيط في C # .NET (شيء مثل Ventrilo أو TeamSpeak ولكن فقط لمدة 15 أو 20 شخصا، وتشغيل 100Mbps LAN). لدي خادم عامل (تخطيط Spawning لكل عميل) وتطبيق العميل باستخدام UDP للاتصال و DirectSound لالتقاط الصوت ولعب الصوت. يمكنني إجراء مكالمات "1 في 1" ولكن لا يمكنني معرفة واحدة من أهم الأمور:

كيف لدي أكثر من شخصين في المحادثة؟

هل كانت مفيدة؟

المحلول

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top