Multimédiás áttekintés

A Windows Presentation Foundation (WPF) multimédiás funkcióival hang- és videotartalmakat integrálhat az alkalmazásokba a felhasználói élmény fokozása érdekében. Ez a témakör a WPF multimédiás funkcióit ismerteti.

Média Alkalmazásprogramozási Felület

Az MediaElement és MediaPlayer osztályok az audio- vagy videotartalmak bemutatására szolgálnak. Ezek az osztályok interaktívan vagy egy órával vezérelhetők. Ezek az osztályok a Microsoft Windows Media Player 10 vezérlőn használhatók a médialejátszáshoz. A használt osztály a forgatókönyvtől függ.

MediaElement UIElement az elrendezés által támogatott, és számos vezérlő tartalmaként használható. Használható az Extensible Application Markup Language (XAML) és a kód használatával is. MediaPlayer viszont Drawing objektumokra van tervezve, és nem rendelkezik elrendezés támogatással. A MediaPlayer használatával betöltött médiatartalmak csak VideoDrawing vagy közvetlen interakcióval a DrawingContext eszközzel mutathatók be. MediaPlayer XAML-ben nem használható.

A rajzobjektumokról és a rajzkörnyezetről további információt a Rajzobjektumok áttekintése című témakörben talál.

Megjegyzés:

Ha a médiatartalmat terjeszti az alkalmazással, nem használhatja a médiafájlt projekt forrásként. A projektfájlban ehelyett a médiatípust Content kell beállítania, és CopyToOutputDirectoryPreserveNewest vagy Alwaysértékre kell állítania.

Médialejátszási módok

Megjegyzés:

Mindkettőhöz MediaElementMediaPlayer hasonló tagok tartoznak. Az ebben a szakaszban található hivatkozások az MediaElement osztálytagokra vonatkoznak. Ha nincs külön megjegyezve, az MediaElement osztályhoz társított tagok az osztályban MediaPlayer is megtalálhatók.

A Windows Presentation Foundation (WPF) médialejátszásának megértéséhez ismernie kell a médialejátszás különböző módjait. Mind a MediaElement és a MediaPlayer használható két különböző médiamódban: független módban és óramódban. A médiamódot a Clock tulajdonság határozza meg. Ha a Clocknull, a médiaelem független módban van. Ha a Clock médiaobjektum nem null értékű, a médiaobjektum óra módban van. Alapértelmezés szerint a médiaobjektumok független módban vannak.

Független üzemmód

Független módban a médiatartalom a médialejátszást vezérli. A független mód a következő beállításokat teszi lehetővé:

  • Az adathordozók közvetlenül megadhatók Uri.

  • A médialejátszás közvetlenül szabályozható.

  • A média Position és SpeedRatio tulajdonságai módosíthatók.

Az adathordozó betöltése az MediaElement objektum tulajdonságának Source beállításával vagy az MediaPlayer objektum metódusának meghívásával Open történik.

A médialejátszás független módban való szabályozásához a médiaobjektum vezérlő módszerei használhatók. Az elérhető vezérlési módszerek a következők: Play, PauseCloseés Stop. Csak akkor érhető el interaktív vezérlés a(z) MediaElement metódusok használatával, ha a(z) LoadedBehavior be van állítva Manual értékre. Ezek a metódusok nem érhetők el, ha a médiaobjektum óra módban van.

A független mód példáját a MediaElement (lejátszás, szüneteltetés, leállítás, hangerő és sebesség) szabályozása című témakörben tekintheti meg.

Óra mód

Óra funkcióban a médialejátszást MediaTimeline vezérli. Az óra üzemmód a következő jellemzőkkel rendelkezik:

  • A média indirekt módon van beállítva egy Uri által.

  • A médialejátszást az óra szabályozhatja. A médiaobjektum vezérlőmetódusai nem használhatók.

  • A média betöltése egy MediaTimeline objektum Source tulajdonságának beállításával, az óra idővonalból való létrehozásával, és az óra hozzárendelésével a médiaobjektumhoz történik. A média is így töltődik be, amikor egy MediaTimeline a Storyboard-en belül egy MediaElement-t céloz meg.

A médialejátszás óra módban történő szabályozásához a ClockController vezérlőmetszeteket kell használni. A ClockController a ClockControllerMediaClock tulajdonságából származik. Ha óra módban egy vagy MediaElement egy MediaPlayer objektum vezérlőmetódusait próbálja használni, a rendszer egy InvalidOperationException műveletet hajt végre.

Az órákról és az ütemtervekről további információt az Animáció áttekintése című témakörben talál.

A MediaElement vezérlése storyboard használatával című témakörben talál példát az óra üzemmódra.

MediaElement osztály

A médiatartalmak hozzáadása egy alkalmazáshoz olyan egyszerű, mint egy MediaElement vezérlő hozzáadása az alkalmazás felhasználói felületéhez, és egy Uri biztosítása az Ön által felvenni kívánt médiához. A Microsoft Windows Media Player 10 által támogatott összes médiatípus támogatott a Windows Presentation Foundationben (WPF). Az alábbi példa a MediaElement bővíthető alkalmazásjelölő nyelv (XAML) egyszerű használatát mutatja be.

<!-- This page shows a simple usage of MediaElement -->
<Page x:Class="MediaElementExample.SimpleUsage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="SimpleUsage"
    >
  <StackPanel Margin="20">
    <MediaElement Source="media/numbers-aud.wmv" />
  </StackPanel>
</Page>

Ebben a mintában a média lejátszása automatikusan megtörténik, amint betöltődik. Miután a média lejátszása befejeződött, a média lezárásra kerül, és az összes médiaerőforrás felszabadul (beleértve a videomemóriát is). Ez az objektum alapértelmezett viselkedése, amit a MediaElement és LoadedBehavior tulajdonságok vezérelnek.

MediaElement vezérlése

Az LoadedBehavior és UnloadedBehavior tulajdonságok a MediaElement viselkedését szabályozzák, amikor a IsLoadedtrue vagy false. A MediaState tulajdonságok úgy vannak beállítva, hogy befolyásolják a médialejátszás viselkedését. Például az alapértelmezett LoadedBehavior érték Play, és az alapértelmezett UnloadedBehavior érték Close. Ez azt jelenti, hogy amint a MediaElement betöltődött és a preroll befejeződött, a média elkezd lejátszani. Miután a lejátszás befejeződött, a média le lesz zárva, és az összes médiaerőforrás ki lesz adva.

A LoadedBehavior és UnloadedBehavior tulajdonságok használata nem az egyetlen módja a médialejátszás szabályozásának. Óra módban az óra vezérelheti a MediaElement, és az interaktív vezérlési módszerek veszik át az irányítást, amikor a LoadedBehaviorManual van. MediaElement ezt a versenyt az irányításért a következő prioritások értékelésével kezeli.

  1. UnloadedBehavior. A helyén, amikor az adathordozó eltávolításra kerül. Ez biztosítja, hogy az összes médiaerőforrás alapértelmezés szerint felszabaduljon, még akkor is, ha a MediaClock társítva van a MediaElement-hez.

  2. MediaClock. Amikor a média rendelkezik egy Clock-vel a helyén. Ha a média ki van ürítve, a MediaClock mindaddig érvényben marad, amíg a UnloadedBehaviorManual. Az óraüzemmód mindig felülbírálja a betöltött viselkedést.MediaElement

  3. LoadedBehavior. Az adathordozó betöltésekor a helyén.

  4. Interaktív vezérlési módszerek. A helyén, amikor LoadedBehavior van Manual. Az elérhető vezérlési módszerek a következők: Play, PauseCloseés Stop.

MediaElement megjelenítése

A MediaElement megjelenítéséhez tartalomra van szükség, amit renderelni lehet, és a MediaElementActualHeight és tulajdonságait nullára állítják, amíg a tartalom be nem töltődik. Csak hangtartalmak esetén ezek a tulajdonságok mindig nullak. Videotartalmak esetén az MediaOpened eseményt követően a ActualWidthActualHeight betöltött adathordozó méretét jelenti. Ez azt jelenti, hogy amíg a média be nem töltődik, a MediaElement nem foglal fizikai helyet a felhasználói felületen (UI), kivéve, ha a Width vagy Height tulajdonságok be vannak állítva.

Mind a Width és Height tulajdonságok beállítása okozza, hogy a médiatartalom megnyúlik, és kitölti a MediaElement számára biztosított területet. A média eredeti méretarányának megőrzése érdekében vagy a WidthHeight tulajdonságot kell beállítani, de mindkettőt nem. Ha a Width és Height tulajdonságokat beállítja, a média rögzített elemméretben jelenik meg, ami nem feltétlenül kívánatos.

Annak érdekében, hogy ne legyen rögzített méretű elem, a Windows Presentation Foundation (WPF) előre lejátszhatja a médiatartalmat. Ezt úgy teheti meg, hogy a beállítást a következőre állítja LoadedBehavior : vagy PlayPause. Pause állapotban a média elő lesz játszva, és megjeleníti az első képkockát. Egy Play állapotban a média előzetesen betöltődik, és megkezdi a lejátszást.

MediaPlayer-osztály

Ahol az MediaElement osztály egy keretrendszerelem, az MediaPlayer osztály objektumokban Drawing való használatra lett tervezve. A rajzobjektumok akkor használhatók, ha a keretrendszerszintű funkciókat feláldozva teljesítménybeli előnyöket érhet el, vagy ha funkciókra van szüksége Freezable . MediaPlayer lehetővé teszi, hogy kihasználja ezeket a funkciókat, miközben médiatartalmat biztosít az alkalmazásokban. Például MediaElementfüggetlen vagy óra módban is használható, MediaPlayer de nem rendelkezik az MediaElement objektum kiürített és betöltött állapotával. Ez csökkenti a lejátszásvezérlés összetettségét.MediaPlayer

A MediaPlayer vezérlése

Mivel MediaPlayer állapot nélküli, a médialejátszást csak két módon lehet szabályozni.

  1. Interaktív vezérlési módszerek. Független üzemmódban, amennyiben a (nullClock tulajdonság) engedélyezi.

  2. MediaClock. Amikor a média rendelkezik egy Clock-vel a helyén.

MediaPlayer megjelenítése

Technikailag a MediaPlayer nem jeleníthető meg, mivel nincs fizikai ábrázolása. Médiumok is megjeleníthetők Drawing-ben az VideoDrawing osztály használatával. Az alábbi példa bemutatja a média megjelenítésére való VideoDrawing használatát.

//
// 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();

Az objektumokról további információt a Drawing témakörben talál.

Lásd még