DirectX Audio-Video-Playback
- on 11:21 AM
- No comments
السلام عليكم ورحمة الله وبركاته
سوف أشرح لكم في هذا الموضوع لمحة سريعة عن كيفية استخدام مكتبات DirectX لتشغيل ملفات الصوت والفيديو بسهولة وكفاءة عالية جداً ,, نبدأ فوراً بالشرح:
أولاً: بما أننا سنعتمد على مكتبة خارجية لذلك يجب أولاً إضافة المكتبات اللازمة وسنحتاج في هذا الدرس لمكتبتين هما:
Microsoft.DirectX.dll
Microsoft.DirectX.AudioVideoPlayback.dll
لإضافتهما: أولاً Add Reference ثم التبويب Browse ثم ابحث عن الملفين في هذا المجلد:
C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.dll
على الأغلب ستجدهما فوراً لأنه لا يكاد يخلو نظام من وجود مكتبات الـ DirectX ,, وإذا لم تجدهما يمكن تحميلهما من المرفقات ثم ربطهم مع البرنامج
ثانياً: استيراد المكتبتين:
using Microsoft.DirectX;
using Microsoft.DirectX.AudioVideoPlayback;
Imports Microsoft.DirectX
Imports Microsoft.DirectX.AudioVideoPlayback
ثالثاً: يلزمنا في هذا الدرس الفئتين Audio و Video الموجودتان في المكتبة Microsoft.DirectX.AudioVideoPlayback.dll
نبدأ بشرح الفئة Aduio أولاً:
الأن سهولة تامة يمكن تشغيل ملف صوتي بهذا الكود البسيط:
Dim myAudioFile As Audio
myAudioFile = New Audio("C:\song.mp3")
myAudioFile.Play()
Audio myAudioFile;
myAudioFile = new Audio(@"C:\song.mp3");
myAudioFile.Play();
فقط لا غير ,, ثلاثة أسطر يمكننا تشغيل ملف صوتي اياً كان صيغته طبعاً طالما ان ملفات الدعم لهذه الصيغة موجودة في النظام Codec:
السطر الأول: تعريف متغير من الفئة Audio
السطر الثاني: إنشاء نسخة جديدة (كائن) من الفئة Audio مع تمرير مسار الملف الصوتي في البارمتر الأول
السطر الثالث: إعطاء أمر التشغيل Play
رابعاً: دعونا الأن نتعرف على أهم خصائص وتوابع هذه الفئة:
myAudioFile.CurrentPosition = 10
هذه الخاصية تمكننا من تحديد أو معرفة موقع التشغيل للملف يعني عند اي ثانية (اعرف انك ام تفهم) ,, انظر الصورة التالية
يعني ان الدالة السابقة تجعل الملف الصوتي يعمل من عند الثانية العاشرة
myAudioFile.Duration
هذه الخاصية تعيد لنا طول المقطع الصوتي بالثواني ,, ولذلك بسهولة يمكننا معرفة طول المقطع الصوتي بالساعات والدقائث والثواني يسهولة:
Dim ts As New TimeSpan(0, 0, myAudioFile.Duration)
TextBox1.Text = ts.ToString()
TimeSpan ts = new TimeSpan(0, 0, myAudioFile.Duration);
TextBox1.Text = ts.ToString();
myAudioFile.Open("path OR Url")
هذا الاجراء من اجل فتح ملف صوتي جديد لتشغيله والشيء الرائع انه يمكننا بواسطة الفئة Audio تشغيل مقطع صوتي على الانترنت او الكمبيوتر
myAudioFile.Pause()
myAudioFile.Play()
myAudioFile.Stop()
الأوامر العادية من اجل تشغيل / إيقاف مؤقت / إيقاف تشغيل المقطع الصوتي
myAudioFile.Paused
myAudioFile.Playing
myAudioFile.Stopped
هذه الخصائص ترجع لنا قيمة Boolean لمعرفة حالة الملف (يعمل , تم إيقافه , تم إيقافه مؤقتاً)
الإجراء Play لتشغيل ملف الذي فتحه بواسطة الفئة Audio
myAudioFile.Playing
ترجع لنا قيمة Boolean لمعرفة هل الملف يعمل حالياً أم لا
myAudioFile.Volume
هذه الخاصية تمكننا من معرفة أو تحديد درجة الصوت للملف (ليس درجة صوت النظام) وبذلك يمكننا التحكم بدرجة الصوت دون الرجوع النظام
ولكن الغريب ان قيمة هذه الخاصية ليست بين 0 (صامت) و 100 (أعلى درجة)
وأنما تتراوح بين 0 (أعلى درجة) و ــ 10000 (صامت) (انتبه إلى علامة الناقص باللون الأحمر)
اي عندما تضع myAudioFile.Volume = -10000 اي انه سيتم كتم صوت الملف
وعندما تضع myAudioFile.Volume = 0 اي سيتم رفع الصوت إلى أعلى درجة ممكنة
:: ملاحظة أخيرة :: قيمة الخاصية Volume تتراوح بين 0 و ــ 10000 حسب MSDN ولكن فعلياً تتراوح بين 0 و ــ 5000
الأن الفئة Video:
وهي تشبه الفئة Audio في معظم خصائصها ,, لذلك سأشرح أهم الخصائص والتوابع الخاصة بهذه الفئة Video:
myVideoFile.Audio
ترجع لنا هذه الخاصية كائن من نوع Audio يمكننا من التكحم في درجة الصوت الخاص بالفيديو (كما تم شرحه في الفئة Audio)
myVideoFile.DefaultSize
تعيد لنا هذه الخاصية حجم الفيديو الإفتراضي (الأصلي) وبذلك يمكننا استخدامه في تحديد حجم الفورم لملائمة حجم الفيديو بالكامل
myVideoFile.Owner
هذه الخاصية تمكننا من معرفة أو تحديد الكائن الذي يتم عرض الفيديو فيه ,, أي الكود التالي يعرض الفيديو في PictureBox1
myVideoFile.Owner = PictureBox1
وإذا لم يتم تحديد قيمة لهذه الخاصية فإن الفيديو سيعمل في نافذة خارجية اي لن يعرض ضمن برنامجنا ولذلك يجب الانتباه جيداً لهذه الخاصية المهمة جداً
myVideoFile.Fullscreen
معرفة أو تحديد عرض الفيديو في وضع ملء الشاشة ولكن للأسف يتم عرض الفيديو في وضع ملء الشاشة ضمن نافذة خارجية اي ليس ضمن الكائن الذي تم تحديده في الخاصية Owner ولذلك لن نستفيد منها
myVideoFile.MaximumIdealSize
myVideoFile.MinimumIdealSize
هذه الخاصيتيتن تعيد لنا أقل واكبر حجم مناسب لعرض الفيديو
myVideoFile.Size
هذه الخاصية تمكننا من معرفة او تحديد حجم الفيديو وبذلك يمكننا تحديد الحجم الذي سيعرض به الفيديو ضمن الكائن المحدد بالخاصية Owner
وبذلك اكون قد انهيت شرح هذه الفئيتن الرائعتين وبقيت لي ملاحظة واحدة:
:: يمكن لهاتين الفئتين تشغيل اي صيغة فيديو او صوت طالما ان ملفات الدعم الخاصة بها Codecs مثبتة في النظام
والسلام عليكم ورحمة الله

Post a Comment