fmo_82

أبدأ الآن بتعلم تطبيقات Voice/Video Chatting باستخدام Silverlight

13 ردود في هذا الموضوع

بسم الله الرحمن الرحيم,

SocketCoderSamples.jpg

يتحدث هذا المقال عن الخطوات الأساسية التي ستساعدك في بناء أي نظم لنقل الصوت والصورة من خلال الإنترنت باستخدام تقنيات الـSilverlight 4 الجديدة علما أنك بحاجة لتحميل Visual Studio 2010 والـ Silverlight 4 من موقع Microsoft لكي تستطيع تطبيق الأمثلة الموجودة في هذا الدرس.

المقدمة:

بالمقارنة مع تقنيات Adobe قدمت Microsoft الخطوة الأولى لدعم برمجيات الدردشة المباشرة من خلال الويب بدعها التعامل مع الـ Microphone و الـ Camera في Silverlight 4 وقد كانت خطوة جيدة لكنها ما زالت غير كافية, هنالك أكثر من مشكلة ما زالت بدون حل , وكمبرمج عليك الاعتماد على نفسك في برمجة حلول لها إذا ما قررت المضي قدما في العمل على تقنيات الـ Silverlight 4 لإنشاء برمجيات الدردشة المباشرة عبر الويب ونستطيع تلخيصها بالتالي:

1-عدم وجود Managed Library لعملية Coding/Decoding لضغط الصوت أو الفديو لإرساله عبر الإنترنت وبالمقارنة مع تقنيات Adobe فقد دعمت التعامل مع H.263 و H.264 لضغط الصوت والفديو وهذا ما زال غير متاح على الإطلاق في Silverlight 4.

2- عدم دعم بروتوكولات النقل في الزمن الحقيقي مثل RTP Protocol وبالتالي لديك خيارين وهما إما النقل من خلال بروتوكول TCP أو UDP أو أن تقوم ببرمجة ذلك بنفسك وبالمقارنة مع Adobe فإنها تدعم النقل من خلال بروتوكول مخصص لهذا الغرض وهو RTMP.

3- عدم وجود Servers Streaming حقيقية لنقل الصوت والفديو بشكل مباشر من Silverlight إلى Media Server والعكس إذ لا يوجد لديك سوى حلين إما استخدام Microsoft Windows Media Server أو استخدام Smooth Streaming من خلال IIS وبالتالي ستكون مضطرا إلى التخلي عن Silverlight لأنه لا يدعم التعامل مع هذه الخوادم والحل الوحيد هو أن تقوم ببناء خادمك بنفسك وبالمقارنة مع Adobe فهناك منتج رائع وهو Flash Media Server.

كيف سيعمل التطبيق:

بشكل عام فإن جميع برمجيات نقل الصوت والصورة لابد من أن تمر بهذه المراحل:

1-الاتصال بالكاميرا والمايكروفون وإرجاع مخرجاتها على شكل Binary Data ثم تحويلها إلى Bytes ليسهل التعامل معها للخطوة التالية.

2-تكون البيانات التي يتم إرجاعها على شكل Raw Formats وبالتالي فإن حجمها سيكون كبير جدا لذلك لابد من القيام بضغطها أولا باستخدام أي من المعايير المتوفرة لضغط فمثلا يمكن أن نحول الصورة إلى JPEG Image وإرسالها وكذلك الصوت يمكن أن نحوله إلى Wave Format أو ضغطه بأحد المعايير المعروفة لضغط الصوت منها على سبيل المثال G.711 أو GSM أو MP3 أو أي معيار آخر أو بدمج الصوت والصورة وضغطهما معا باستخدام معيار مثل H.263 أو H.264 وهذه الخطوة هي من أهم ما ستقوم به لأنها وبكل بساطة ستحدد متطلبات نظامك كسرعة الشبكة وإمكانية استخدامه على الإنترنت من جهة وجودة الصوت أو الصورة من جهة أخرى.

3-إرسال البيانات المضغوطة باستخدام إحدى بروتوكولات النقل سواء TCP,UDP أو بروتوكول النقل RTP وهذه الخطو هي أيضا مهمة حيث تعتمد على مدى أهمية جودة البيانات التي يتم نقلها من جهة وأهمية سرعة نقلها بشكل Real Time من جهة أخرى, وهدف أي نظام هو نقل البيانات بالسرعة الممكنة وبأفضل جودة ممكنة.

4-استقبال البيانات المرسلة من خلال Server له وظائف محددة بحسب ما تريده من التطبيق وكمثال يتم في برمجيات الدردشة استقبال البيانات وإعادة إرسالها إلى المتصلين مع الـ Server, وفي العادة يكون الـServer على Public IP والمتصلين خلف NAT Server. ولحسن الحظ يدعم الاتصال بالـSocket هذه العملية بدون أي مشكلة.

5-يتم استقبال البيانات بشكل مضغوط ثم عمل Decoding لها و من ثم عرض الصورة على Form مخصص وإخراج الصوت إلى السماعات.

لقراءة بقية المقال باللغة الإنجليزية راجع الرابط التالي على موقع CodeProject:

http://www.codeproject.com/KB/silverlight/SilverlightVoiceVideoChat.aspx

المرجع وروابط تحميل المثال:

SocketCoder.Com, Silverlight 4 Web Conferencing Project:

Module 1: Silverlight 4 Voice Chat Sample:

http://socketcoder.com/ArticleFile.aspx?index=2&ArticleID=70

Module 2: Silverlight 4 WebCam Conferencing Sample:

http://socketcoder.com/ArticleFile.aspx?index=2&ArticleID=68

Module 3: Silverlight 4 Desktop Presenter Sample:

http://socketcoder.com/ArticleFile.aspx?index=2&ArticleID=69

تم تعديل بواسطه فادي عبدالقادر
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أخر تحديث على المشروع الإصدار 0.2: Silverlight Voice Chat

- تم دعم Full Duplex وضغط البيانات إلى معدل ممتاز بين 3KBytes للـSpeex و 16KBytes للـG.711 والنظام يعمل الآن على الشبكة المحلية والإنترنت بشكل ممتاز

لتحميل أخر تحديث:

http://socketcoder.com/ArticleFile.aspx?index=2&ArticleID=70

رابط المشروع على موقع CodePlex

http://silverlightvideochat.codeplex.com

تم تعديل بواسطه فادي عبدالقادر
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بارك الله فيك على المعلومات

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

برافو يا فادى الله يجازيك خير يا اخي الغالي لكن ليا تعليق ياريت شرح التعديل على ملفات السيلفر لايت لاننا عاوزين نعمل كل ده فى ابليكشن كلاينت واحد

ليا تعليق تانى

انا عملت تطبيق بنفس الطريقه لكن مش ويب الموضوع هو انا عاوز اعمل اكتر من غرفه فى السيرفر ودى اخر حاجه قبل ما ابيع المشروع :)

ياريت تفيدنا بخبراتك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

الأخ احمد,

مطلبك يحتاج إلى شرح طويل نسبيا

سيكون هنالك فصل كامل حول هذا الموضوع في الإصدار الرابع من الكتاب إن شاء الله

على اي حال حاول البدأ بالتنفيذ وأي نقطة تصعب عليك بإمكانك السؤال عنها

واهلا وسهلا بك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

انهو اللى طويل.؟

التعديل على السيلفر لايت فايلز ولا عمل اكتر من غرفه فى السيرفر؟؟

وهل سيرفرك يدعم اكتر من غرفه؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

تعتمد الطريقة على عمل 3 dimensions Array list و Linq في حالة الإستعلام كل ذلك في جانب السيرفر فقط حيث ترسل فقط اسمك والغرفة التي تريد الإنضمام اليها لى السيرفر وكمثال مبسط جدا على ذلك:

من المعروف اننا نخزن Socket المتصل في Arraylist لكي نستطيع عمل callback له وكمثال وحتى نستطيع ضم كل متصل في غرفة ما نصنع Array of Arraylist كما يلي كمثال على وجود عشرة غرف:

Arraylist[] arr = new Arraylist[10]

ومن ثم يمكن ضم كل متصل إلى غرفة ما من ضمن هذه العشرة غرف كما يلي كمثال:

 arr[RoomIndex].Add(ClientSocket)

وعند الإرسال لكل الموجودين في الغرفة نفحص في السيرفر الغرفة التي ينضم اليها ذلك الشخص في سجل السيرفر ثم نرسل إلى كافة المجموعة....

ارجو ان تكون الصورة اكثر وضوحا الآن كما يمكنك البدأ بالمشروع وفي حالة واجهتك صعوبة فيمكنك طرح سؤالك هنا

واهلا وسهلا بك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

فادى ما نزلت الكلاينت حتى الان المدمج فيه الموديولز جميعا فى ملف كلاينت واحد ولا نزلت طريقه تعديل او عمل ملف السيلفر لايت الذي يعتبر الملف الرئيسي فى الكلاينت وايضا انت لا تجيب على السكاي بي لا فى الاوقات اللى انت كاتبها عليه او غيرها

وشكرا لتعاونك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

ماشاء الله تبارك الله

بارك الله فيكم

انما عندي اقتراح على مطوري البرنامج

بدل مايكون الاتصال عن طريق اي بي في الشبكة الداخلية

يكون لكل مستخدم اسم حساب مسجل في قاعدة بيانات ولما يدخل الى البرنامج عن طريق ادخال معلومات الدخول يرسل المعلومات البرنامج الى السيرفر المخزنه فيه قاعدة البيانات ثم يعطيه اي بي لتلك الجلسه خاص لحسابه

يعني في البداية لازم يتصل بسيرفر في النت والسيرفر يعمل شبه شبكة محليه على المستخدمين المتصلين

بحيث يكون لتلك الجلسه عنوان اي بي خاص لحسابه مدام متصل

والله اعلم مجرد اقتراح قد يكون صحيح وقد يكون خيالي

بالتوفيق لكل خير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

قمت بتجربه البرنامج بالكامل والواضح انه به خلل كبير

1- الصوت غير مكتمل ويقطع من آن لأخر

2- بعض مقاطع الصوت لا تصل بالمرة

3- هناك بعض الأجزاء تصل قبل الأخرى وبالتالي لا يمكن الأعتماد عليه في برنامج حقيقي كالفيديوكونفرنس او الشات الصوتي.

4- يبدوا أن السيلفرليت يحتاج إلى المزيد من التطوير

بعد إجراء يعض التعديلات تمكنت من التالي

1- تشغيل جميع الأجزاء دون تقطيع نهائيا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اهلا وسهلا بكم

نتمنى تحميل اخر التحديثات وليس المثال المرفق مع المقال للإستفادة من التحديثات على النظام

المشروع المجاني مع الكود المصدري:

http://silverlightvideochat.codeplex.com

المشروع المدفوع مع الكود المصدري:

http://webvideoconferencing.codeplex.com

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم استاذ فادي

اريد الاستفسار عن تقنيات Adobe الافضل من حيث كلامك عنها في اول مقال التي من الممكن استخدامها لنقل الصوت و الصورة بكفاءة افضل عن طريق RTP و هل يمكن استخدامها من خلال ال DotNet ؟

شكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

تحياتى لكم أخوتى

أنا عمل على مشروع محاضرات تفاعلية قائم على نفس الفكرة وأجه الكتير من المشاكل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .