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

يتحدث هذا المقال عن الخطوات الأساسية التي ستساعدك في بناء أي نظم لنقل الصوت والصورة من خلال الإنترنت باستخدام تقنيات الـ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