برنامج DXMedia Player C# & VB.Net

سوف نتناول في هذا الموضوع شرح كيفية استخدام مكتبات DirectX في بيئة الدوت نت - C# & VB.Net - لتشغيل ملفات الصوت والفيديو بسهولة وكفاءة عالية جداً, دون الحاجة إلى أدوات خارجية حيث ان مكتبة DirectX أساسية وموجودة على كل جهاز كمبيوتر.

قمت بكتابة مثال لتطبيق هذا الدرس وهو DxMediaPlayer C# & VB.Net, ستجد رابط تحميله في آخر الدرس.

  برنامج DxMediaPlayer C# & VB.Net:


c#-vb-dotnet-directx mediaplayer


اولاً وبما أننا سنعتمد على مكتبة DirectX لذلك يجب أولاً إضافة المكتبات اللازمة, وسنحتاج في هذا الدرس لمكتبتين هما:

Microsoft.DirectX.dll
Microsoft.DirectX.AudioVideoPlayback.dll

- لإضافتهما: من قائمة Project ثم Add Reference ثم التبويب Browse ثم ابحث عن المكتبتين في هذا المجلد:
C:\Windows\Microsoft.NET\DirectX for Managed Code\1.0.2902.0

على الأغلب ستجدهما فوراً لأنه لا يكاد يخلو نظام من وجود مكتبات الـ DirectX ,, وإذا لم تجدهما يمكنك تحميلهما من الروابط في آخر الدرس ثم اربطهم مع البرنامج.

ثم نقوم باستيراد المكتبتين التاليتين:
Imports Microsoft.DirectX
Imports Microsoft.DirectX.AudioVideoPlayback
using Microsoft.DirectX;
using Microsoft.DirectX.AudioVideoPlayback;

يلزمنا في هذا الدرس الفئة (الكلاس) Audio والفئة Video الموجودتان في المكتبة :Microsoft.DirectX.AudioVideoPlayback.dll

  شرح الفئة Audio Class - C# & VB.Net :


بسهولة تامة يمكن تشغيل ملف صوتي Audio File بهذا الكود البسيط C# و VB.Net:
Dim myAudioFile As Audio
myAudioFile = New Audio("C:\song.mp3")
myAudioFile.Play()
Audio myAudioFile;
myAudioFile = new Audio(@"C:\song.mp3");
myAudioFile.Play();

فقط لا غير ,, بثلاثة أسطر C# و VB.Net يمكننا تشغيل ملف صوتي آياً كانت صيغته طبعاً طالما ان ملفات الدعم Codec لهذه الصيغة موجودة في النظام:

حيث قمنا في السطر الاول بتعريف كائن من الفئة Audio, ثم إنشاء نسخة جديدة (كائن) من الفئة Audio مع تمرير مسار الملف الصوتي في البارامتر الأول, أخيراً إعطاء أمر التشغيل Play.


اذا لم تكن تعرف الفرق بين الفئة (كلاس) والكائن فانصحك بقراءة الدرس التالي: الفرق بين Class و Object في الدوت نت

الأن سنتعرف على أهم خصائص وتوابع هذه الفئة Audio Class:


- الخاصية CurrentPosition: هذه الخاصية تمكننا من تحديد أو معرفة موقع تشغيل الملف يعني عند اي ثانية يتم التشغيل الآن. (المثال يقوم بنقل موقع التشغيل للثانية 10).
myAudioFile.CurrentPosition = 10

- الخاصية 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();

- الاجراء Open: هذا الاجراء من اجل فتح ملف صوتي جديد لتشغيله والشيء الرائع انه يمكننا بواسطة الفئة Audio تشغيل مقطع صوتي على الانترنت او الكمبيوتر:
myAudioFile.Open("path OR Url")

- الأوامر العادية من اجل تشغيل / إيقاف مؤقت / إيقاف تشغيل المقطع الصوتي:
myAudioFile.Pause()
myAudioFile.Play()
myAudioFile.Stop()

- الخصائص المتعلقة بالأوامر السابقة, وهي ترجع لنا قيمة Boolean لمعرفة حالة الملف (يعمل , تم إيقافه , تم إيقافه مؤقتاً):
myAudioFile.Paused
myAudioFile.Playing
myAudioFile.Stopped

- الخاصية Volume: هذه الخاصية تمكننا من معرفة أو تحديد درجة الصوت للملف (ليس درجة صوت النظام) وبذلك يمكننا التحكم بدرجة الصوت دون الرجوع للنظام:
myAudioFile.Volume

ولكن الغريب ان قيمة هذه الخاصية ليست بين 0 (صامت) و 100 (أعلى درجة).
وإنما تتراوح بين 0 (أعلى درجة) و -10000 (صامت) (انتبه إلى علامة الناقص باللون الأحمر).

اي عندما تضع myAudioFile.Volume = -10000 اي انه سيتم كتم صوت الملف.
وعندما تضع myAudioFile.Volume = 0 اي سيتم رفع الصوت إلى أعلى درجة ممكنة.

ملاحظة أخيرة: قيمة الخاصية Volume تتراوح بين 0 و -10000 حسب MSDN ولكن فعلياً تتراوح بين 0 و -5000.

  شرح الفئةVideo Class - C# & VB.Net :


وهي تشبه الفئة Audio في معظم خصائصها, لذلك سأشرح أهم الخصائص والتوابع الخاصة بهذه الفئة Video:

- الخاصية Audio: ترجع لنا هذه الخاصية كائن من نوع Audio يمكننا من التحكم بدرجة الصوت الخاص بالفيديو (كما تم شرحه في الفئة Audio):
myVideoFile.Audio

- الخاصية DefaultSize: تعيد هذه الخاصية حجم الفيديو الافتراضي (الأصلي) وبذلك يمكننا استخدامه في تحديد حجم الفورم لملائمة حجم الفيديو بالكامل.
myVideoFile.DefaultSize

- الخاصية Owner: هذه الخاصية تمكننا من معرفة أو تحديد الاداة Control الذي يتم عرض الفيديو فيها, وإذا لم يتم تحديد قيمة لهذه الخاصية فإن الفيديو سيعمل في نافذة خارجية اي لن يعرض ضمن برنامجنا ولذلك يجب الانتباه جيداً لهذه الخاصية المهمة جداً.

الكود التالي يعرض الفيديو في PictureBox1:
myVideoFile.Owner = PictureBox1

- الخاصية FullScreen: لمعرفة أو تحديد عرض الفيديو في وضع ملء الشاشة, ولكن للأسف سيتم عرض الفيديو في وضع ملء الشاشة ضمن نافذة خارجية اي ليس ضمن الكائن الذي تم تحديده في الخاصية Owner ولذلك لن نستفيد منها:
myVideoFile.Fullscreen = False

- الخاصتين MaximumIdealSize و MinimumIdealSize: هذه الخاصيتين تعيد لنا أصغر واكبر حجم مناسب لعرض الفيديو:
Dim max_size As Size = myVideoFile.MaximumIdealSize
Size min_size = myVideoFile.MinimumIdealSize;

- الخاصية Size: هذه الخاصية تمكننا من معرفة او تحديد حجم الفيديو وبذلك يمكننا تحديد الحجم الذي سيعرض به الفيديو ضمن الكائن المحدد بالخاصية Owner:
myVideoFile.Size = New Size(500, 400)



وبذلك نكون قد انتهينا من شرح هذه الفئتين الرائعتين التي تمكننا ببساطة من تشغيل الصوت والفيديو في الفيجوال ستوديو C# و VB.Net, وبقيت لي ملاحظة واحدة:

يمكن لهذه الفئتين تشغيل اي صيغة فيديو او صوت طالما ان ملفات الدعم الخاصة بها Codecs مثبتة في النظام.





1 تعليقات :

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

رد

إرسال تعليق