نظرة عامة حول متعدد الوسائط
يقدم هذا الموضوع مميزات الوسائط المتعددة الخاصة ب Windows Presentation Foundation (WPF). تسمح لك مميزات الوسائط المتتعددة بالتكامل بين الصوت والفيديو في التطبيقات لتحسين خبرة المستخدم.
يشتمل هذا الموضوع على الأقسام التالية.
- API الوسائط:
- أوضاع تشغيل الوسائط
- فئة MediaElement
- فئة MediaPlayer
- موضوعات ذات صلة
API الوسائط:
كلا من MediaElement و MediaPlayer يتم استخدامه لتقديم الصوت، والفيديو، و الفيديو بمحتوى صوتي. كلاهما يمكن التحكم فيه بشكل تفاعلي أو بواسطة الساعة. كلاهما يمكن أن يعتمد على أدنى Microsoft Windows Media Player 10 OCXلقراءة الوسائط. ومع ذلك، يستهدف استخدام هذه API وحدات سيناريو مختلفة.
MediaElement هوUIElement الذي يتم دعمه بواسطةتخطيط النظام و يمكن أن يتم استهلاكه كمحتوي للعديد من عناصر التحكم. وهو أيضاً قابل للاستخدام في Extensible Application Markup Language (XAML) بالإضافة إلى التعليمات البرمجية.MediaPlayer ، ومن ناحية أخرى، يتم تصميم لكائناتDrawing و تلك التى تفتقر لدعم التخطيط. وسائط التي تم تحميله باستخدام MediaPlayerيمكن فقط تقديم استخدام VideoDrawingأو التعامل مباشرة مع DrawingContext. MediaPlayerلا يمكن استخدامها في XAML.
للحصول على المزيد من المعلومات حول رسم الكائنات و سياق الرسم، راجع نظرة عامة حول كائنات الرسم.
ملاحظة |
---|
عند توزيع الوسائط مع التطبيق الخاص بك, لا يمكنك استخدام ملف الوسائط كمورد مشروع كما تفعل مع الصورة.في ملف المشروع الخاص بك, يجب عليك تعيين نوع الوسائط إلي Content وتعيين CopyToOutputDirectory إلي PreserveNewest أو Always. |
أوضاع تشغيل الوسائط
ملاحظة |
---|
كلا من MediaElement و MediaPlayer تحتويان على أعضاء متشابهة.تشير الارتباطات الموجودة في هذا المقطع الى أعضاء فئة MediaElement.ما لم تتم الإشارة بشكل واضح، الأعضاء المرتبطة في فئة MediaElement يمكن العثور عليها أيضاً في فئة MediaPlayer. |
لفهم تشغيل الوسائط في Windows Presentation Foundation (WPF) ، التعرف على الأوضاع المختلفة التي يمكن تشغيل الوسائط بها مطلوبة. كلا من MediaElement و MediaPlayer يمكن أن يتم استخدامهما في وضعين مختلفين، الوضع المستقل و وضع الساعة. يتم تحديد وضع الوسائط بواسطة خاصية Clock. عندما Clock يكون null ، يظهر كائن الوسائط موجوداً في الوضع المستقل. عندما يكون Clockغير فارغ، يكون الكائن موجود في وضع الساعة. بشكل افتراضي، كائنات الوسائط في الوضع المستقل.
الوضع المستقل
في الوضع المستقل، يحرك محتوى الوسائط التشغيل. الوضع المستقل يمكين الخيارات التالية:
يمكن تحديد Uri الوسائط مباشرة.
يمكن التحكم فى تشغيل الوسائط مباشرةً.
يمكن تعديلPosition الوسائط و خصائص SpeedRatio .
يتم تحميل الوسائط عن طريق تعيين MediaElement خاصية Source للكائن أو عن طريق استدعاء MediaPlayer أسلوب Open للكائن .
للتحكم بتشغيل الوسائط في الوضع المستقل، يمكن استخدام أساليب التحكم لكائن الوسائط . أساليب التحكم المتوفرة هي Play ، Pause ، Close ، و Stop. للMediaElement ، التحكم التفاعلي باستخدام هذه الطرق يتوفر فقط عندما يتم تعيين LoadedBehavior الى Manual. هذه الطرق غير متوفرة عندما يكون كائن الوسائط في وضع الساعة.
راجع كيفية القيام بما يلي: التحكم ب MediaElement (تشغيل ، إيقاف مؤقت ، إيقاف و صوت و سرعة) للحصول على مثال للوضع المستفل.
وضع الساعة
في وضع ساعة MediaTimeline تحرك تشغيل الوسائط. وضع الساعة له المميزات التالية:
يتم تعيينUri الوسائط بشكل غير مباشر من خلال MediaTimeline.
يمكن التحكم بتشغيل الوسائط من قبل "الساعة". لا يمكن استخدام أساليب التحكم فى كائن الوسائط.
يتم تحميل الوسائط عن طريق تعيين MediaTimeline خاصية Source للكائن، و إنشاء الساعة من المخطط الزمني، و تعيين الساعة الى كائن الوسائط. أيضاً يتم تحميل الوسائط بهذه الطريقة عندما يقوم MediaTimeline داخل Storyboard باستهداف MediaElement.
للتحكم فى تشغيل الوسائط في وضع الساعة, ClockController يجب استخدام أساليب التحكم. ClockController يتم الحصول عليه من خاصية ClockController لل MediaClock. في حالة محاولة استخدام أساليب التحكم إما ل MediaElement أو كائن MediaPlayer في وضع الساعة سيتم طرح InvalidOperationException .
لمزيد من المعلومات حول المخططات الزمنية و الساعات، راجع نظرة عامة حول الحركة.
راجع كيفية القيام بما يلي: التحكم فى MediaElement باستخدام Storyboard للحصول على مثال على وضضع الساعة.
فئة MediaElement
إضافة وسائط الى تطبيق يكون بسيطاً مثل إضافة عنصر التحكم MediaElementالى واجهة المستخدم (UI) للتطبيق وتوفير Uri الى الوسائط التى ترغب فى تتضمينها. كافة أنواع الوسائط المعتمدة من قبل Microsoft Windows Media Player 10 معتمدة فيWindows Presentation Foundation (WPF) يظهر المثال التالي استخدام بسيط لل MediaElement في Extensible Application Markup Language (XAML).
<!-- This page shows a simple usage of MediaElement -->
<Page x:Class="MediaElementExample.SimpleUsage"
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
Title="SimpleUsage"
>
<StackPanel Margin="20">
<MediaElement Source="media/numbers-aud.wmv" />
</StackPanel>
</Page>
<!-- This page shows a simple usage of MediaElement -->
<Page x:Class="MediaElementExample.SimpleUsage"
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
Title="SimpleUsage"
>
<StackPanel Margin="20">
<MediaElement Source="media/numbers-aud.wmv" />
</StackPanel>
</Page>
في هذه العينة، يتم تشغيل الوسائط تلقائياً بمجرد تحميله. حالما انتهت الوسائط من تشغيله، يتم غلق الوسائط و ينم طرح كافة مواردها (بما في ذلك ذاكرة الفيديو). هذا هو السلوك الافتراضى لكائن MediaElement ويتم التحكم به من قبل LoadedBehavior و خصائص UnloadedBehavior.
التحكم في MediaElement
LoadedBehavior و خصائص UnloadedBehavior تتحكم فى سلوك MediaElement عندما IsLoaded يكون true أو false على الترتيب. MediaState يتم تعيين الخصائص لتؤثر على سلوك تشغيل الوسائط . على سبيل المثال، LoadedBehavior الافتراضى يكون Play و UnloadedBehavior الافتراضى يكون Close. وهذا يعني أنه بمجرد أن يتم تحميل MediaElement و اكتمال قبل التثبيت ، تبدأ الوسائط فى التشغيل. بمجرد اكتمال التشغيل، يتم غلق الوسائط و كافة مواردها التي تم إصدارها.
LoadedBehavior و خصائص UnloadedBehavior ليست الطريقة الوحيدة للتحكم فى تشغيل الوسائط. يمكن التحكم في الوضع ساعة، الساعة MediaElementو أن تتحكم الأساليب عنصر تحكم تفاعلي عند LoadedBehaviorهو Manual. MediaElementيعالج هذا المنافسة لعنصر التحكم بواسطة جاري الآن التقييم الأولويات التالية.
UnloadedBehavior. في وضع وقت وسائط هو لم يتم إلغاء تحميله. هذا يضمن إصدار كافة موارد الوسائط بشكل افتراضي حتى عندما MediaClock يقترن MediaElement.
MediaClock. في مكان عندما يكون وسائط Clock. إذا تم إلغاء تحميل الوسائط، سيؤثر MediaClock طالما UnloadedBehavior يكون Manual. وضع الساعة دوماً يقوم بتجاوز السلوك المحملMediaElement.
LoadedBehavior. في وضع وقت وسائط هو تم تحميله.
أساليب التحكم التفاعلية حيثما يكون LoadedBehavior هو Manual. أساليب التحكم المتوفرة هي Play ، Pause ، Close ، و Stop.
عرض MediaElement
لعرض MediaElement يجب أن يكون لديه محتوى للتقديم وستكون الخصائص ActualWidth و ActualHeight الخاصة به معينة الى الصفر إلى أن يتم تحميل المحتوى. لمحتوى الصوت فقط هذه الخصائص تكون دوماً صفر. بالنسبة لمحتوى الفيديو ، بمجرد أن يتم بدء تشغيل الحدث MediaOpened سيقوم ActualWidth و ActualHeight بالاعلام عن حجم الوسائط التى تم تحميلها. وهذا يعني أنه إلى أن يتم تحميل الوسائط ، لن يأخذ MediaElement أي مساحة فعلية في واجهة المستخدم (UI) إلا إذا تم تعيين الخصائص Width أو Height.
تعيين كلا من الخصائص Width و Height سيؤدي بخصائص الوسائط لأن تتمدد لملء المنطقة التي تم توفيرها لـ MediaElement. للمحافظة على نسبة العرض إلى الارتفاع الأصلية الخاصة بالوسيطة ، يجب تعيين إما الخاصية Width أو Height ولكن وليس كلاهما. تعيين كلا من الخصائص Width و Height سيؤدي بخصائص الوسائط الى التقديم في حجم عنصر ثابت قد لا يكون مفضلاً.
لتجنّب عنصر ثابت الحجم التي ، يمكن لـ Windows Presentation Foundation (WPF) preroll الوسائط. ويتم هذا عن طريق تعيين LoadedBehavior الى إما Play أو Pause. في الحالة Pause ، سوف تتم تهيئة الوسائط و ستمثل الإطار الأول. في الحالة Play ، سوف تكون الوسائط preroll وتبدأ فى التشغيل.
فئة MediaPlayer
حيث أن MediaElement هى فئة عنصر إطار العمل، يتم تصميم الفئة MediaPlayer كى تكون مستخدمة في كائنات Drawing. يتم استخدام الكائنات الرسومية عند التي يمكن sacrifice ميزات المستوى إطار عمل للحصول على مزايا الأداء أو عند الحاجة إلى Freezableالميزات. MediaPlayerيتيح لك إلى الاستفادة من هذه الميزات أثناء تقديم محتوى وسائط في التطبيقات الخاصة بك. مثل MediaElement ، يمكن استخدام MediaPlayer في وضع مستقل أو وضع ساعة ولكن ليس له حالات التحميل وعدم التحميل MediaElement الخاصة بالكائن. وهذا يقلل من تعقيد عنصر التحكم الخاص بـ MediaPlayer.
التحكم فى MediaPlayer
لأن MediaPlayer هو بدون حالة ، توجد طريقتان فقط للتحكم في تشغيل الوسائط.
أساليب التحكم التفاعلية حيث يكون الوضع مستقلاً (الخاصية null Clock ).
MediaClock. في مكان عندما يكون وسائط Clock.
عرض MediaPlayer
من الناحية التقنية ، لا يمكن عرض MediaPlayer لأنه ليس لها تمثيل فعلى. ومع ذلك، يمكن استخدامها لتقديم الوسائط في Drawing باستخدام الفئة VideoDrawing. يوضح المثال التالي استخدام VideoDrawing لعرض الوسائط.
//
// Create a VideoDrawing.
//
MediaPlayer player = new MediaPlayer();
player.Open(new Uri(@"sampleMedia\xbox.wmv", UriKind.Relative));
VideoDrawing aVideoDrawing = new VideoDrawing();
aVideoDrawing.Rect = new Rect(0, 0, 100, 100);
aVideoDrawing.Player = player;
// Play the video once.
player.Play();
راجع نظرة عامة حول كائنات الرسم، لمزيد من المعلومات حول كائنات Drawing.