Sdílet prostřednictvím


Přehled multimédií

Multimediální funkce ve Windows Presentation Foundation (WPF) umožňují integrovat zvuk a video do vašich aplikací, aby se zlepšilo uživatelské prostředí. Toto téma představuje multimediální funkce WPF.

Rozhraní API médií

Třídy MediaElement a MediaPlayer se používají k prezentaci obsahu zvuku nebo videa. Tyto třídy lze ovládat interaktivně nebo hodinou. Tyto třídy lze použít na ovládacím prvku Microsoft Windows Media Player 10 pro přehrávání médií. Kterou třídu použijete, závisí na scénáři.

MediaElement je podporovaná UIElement rozložením a může být využita jako obsah mnoha ovládacích prvků. Je také použitelný v jazyku XAML (Extensible Application Markup Language) i v kódu. MediaPlayer, na druhou stranu je určen pro Drawing objekty a nemá podporu rozložení. Médium načtené pomocí souboru MediaPlayer lze prezentovat pouze pomocí VideoDrawing nebo přímé interakce s DrawingContext. MediaPlayer nelze použít v jazyce XAML.

Další informace o nakreslených objektech a kontextu výkresu naleznete v tématu Přehled nakreslených objektů.

Poznámka:

Při distribuci médií s aplikací nelze použít multimediální soubor jako zdroj projektu. V souboru projektu je nutné nastavit typ média na Content a nastavit CopyToOutputDirectory na PreserveNewest nebo Always.

Režimy přehrávání médií

Poznámka:

Oba MediaElement a MediaPlayer mají podobné členy. Odkazy v této části odkazují na MediaElement členy třídy. Není-li výslovně uvedeno, členové propojení s MediaElement třídou mohou být nalezeni také ve třídě MediaPlayer.

Abyste porozuměli přehrávání médií ve Windows Presentation Foundation (WPF), je potřeba porozumět různým režimům, ve kterých je možné přehrávat multimédia. Obě MediaElement a MediaPlayer lze je používat ve dvou různých režimech médií, nezávislém režimu a režimu hodin. Režim média je určen vlastností Clock . Pokud Clock je null, multimediální objekt je v nezávislém režimu. Clock Pokud je objekt média nenulový, je v režimu hodin. Ve výchozím nastavení jsou multimediální objekty v nezávislém režimu.

Nezávislý režim

V nezávislém režimu multimediální obsah řídí přehrávání médií. Nezávislý režim umožňuje následující možnosti:

  • Médium Uri lze zadat přímo.

  • Přehrávání médií lze ovládat přímo.

  • Position a SpeedRatio vlastnosti média je možné upravit.

Médium se načte buď nastavením vlastnosti objektuMediaElement, nebo voláním Source metody objektuMediaPlayer.Open

K ovládání přehrávání médií v nezávislém režimu lze použít ovládací metody mediálního objektu. Dostupné kontrolní metody jsou Play, Pause, Close, a Stop. Interaktivní MediaElement ovládání pomocí těchto metod je dostupné pouze tehdy, když je LoadedBehavior nastavena na Manual. Tyto metody nejsou k dispozici, pokud je objekt média v režimu hodin.

Příklad nezávislého režimu najdete v tématu Řízení mediaElement (přehrávání, pozastavení, zastavení, hlasitost a rychlost).

Hodinový režim

V hodinovém režimu MediaTimeline řídí přehrávání médií. Režim hodin má následující charakteristiky:

  • MédiaUri jsou nepřímo nastavena prostřednictvím MediaTimeline.

  • Přehrávání médií je možné ovládat hodinou. Řídicí metody multimediálního objektu nelze použít.

  • Média se načítají nastavením vlastnosti MediaTimeline objektu Source, vytvořením časovače z časové osy a přiřazením časovače k mediálnímu objektu. Médium je také načteno tímto způsobem, když MediaTimeline uvnitř Storyboard cílí na MediaElement.

Chcete-li ovládat přehrávání médií v režimu hodin, musíte použít metody ovládání ClockController. A ClockController je získán z ClockController vlastnosti MediaClock. Pokud se pokusíte použít řídicí metody objektu MediaElement nebo objektu MediaPlayer v režimu hodin, InvalidOperationException bude vyvolán.

Další informace o hodinách a časových osách najdete v přehledu animací .

Příklad režimu hodin najdete v tématu Řízení mediaElement pomocí scénáře .

Třída MediaElement

Přidání média do aplikace je jednoduché jako přidání MediaElement ovládacího prvku do uživatelského rozhraní aplikace a poskytnutí Uri média, které chcete zahrnout. Všechny typy médií podporované aplikací Microsoft Windows Media Player 10 jsou podporovány ve Windows Presentation Foundation (WPF). Následující příklad ukazuje jednoduché použití MediaElement jazyka XAML (Extensible Application Markup Language).

<!-- 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>

V této ukázce se média přehrají automaticky, jakmile se načte. Po dokončení přehrávání média se médium zavře a všechny multimediální prostředky se uvolní (včetně videopaměti). Toto je výchozí chování objektu MediaElement a je řízeno LoadedBehavior vlastnostmi a UnloadedBehavior vlastnostmi.

Řízení mediaElementu

Vlastnosti LoadedBehavior a UnloadedBehavior řídí chování MediaElement , když je IsLoadedtrue nebo false, v uvedeném pořadí. Vlastnosti MediaState jsou nastaveny tak, aby ovlivnily chování přehrávání médií. Například výchozí LoadedBehavior hodnota je Play a výchozí UnloadedBehavior hodnota je Close. To znamená, že jakmile se načte MediaElement a preroll je dokončený, obsah se začne přehrávat. Po dokončení přehrávání se médium zavře a uvolní se všechny multimediální prostředky.

Vlastnosti LoadedBehavior a UnloadedBehavior nejsou jediným způsobem, jak ovládat přehrávání médií. V režimu hodin mohou hodiny ovládat MediaElement a interaktivní metody řízení mají kontrolu, když je LoadedBehaviorManual. MediaElement řeší tuto soutěž pro kontrolu vyhodnocením následujících priorit.

  1. UnloadedBehavior. Na místě, když je médium uvolněno. Tím se zajistí, že všechny mediální prostředky budou ve výchozím nastavení uvolněny, i když je MediaClock přidružené k MediaElement.

  2. MediaClock. Na místě v případě, že média mají Clock. Pokud je médium uvolněno, MediaClock bude platit, pokud je UnloadedBehaviorManual. Hodinový režim vždy přepíše načtené chování MediaElement.

  3. LoadedBehavior. Na svém místě po načtení média.

  4. Interaktivní řídicí metody. Místo, kde LoadedBehavior je Manual. Dostupné kontrolní metody jsou Play, Pause, Close, a Stop.

Zobrazení prvku MediaElement

Aby se zobrazilo MediaElement, musí mít vykreslitelný obsah a jeho vlastnosti ActualWidth a ActualHeight budou nastaveny na nulu, dokud se obsah nenačte. U obsahu pouze zvuku jsou tyto vlastnosti vždy nulové. Po vyvolání události MediaOpened budou ActualWidth a ActualHeight hlásit velikost načteného média pro videoobsah. To znamená, že dokud se nenačte médium, MediaElement nezabírá žádné fyzické místo v uživatelském rozhraní (UI), pokud nejsou nastaveny vlastnosti Width nebo Height.

Nastavení vlastností Width a Height způsobí, že médium se roztáhne, aby vyplnilo oblast určenou pro MediaElement. Chcete-li zachovat původní poměr stran média, měla by být nastavena buď vlastnost Width, nebo Height, ale ne obě zároveň. Nastavení obou Width vlastností Height způsobí, že média budou přítomna v pevné velikosti prvku, která nemusí být žádoucí.

Aby se zabránilo vytvoření prvku s pevnou velikostí, může Windows Presentation Foundation (WPF) předem přehrát média. To se provádí nastavením LoadedBehavior na buď Play nebo Pause. V Pause stavu se médium předběžně připraví a zobrazí první snímek. Ve stavu Play se médium přednačte a začne přehrávání.

Třída MediaPlayer

Zatímco třída MediaElement je prvek architektury, třída MediaPlayer je navržena tak, aby byla použita v objektech Drawing. Nakreslené objekty se používají, když můžete obětovat funkce na úrovni rámce, abyste získali výhody výkonu nebo když potřebujete Freezable funkce. MediaPlayer umožňuje využívat tyto funkce při poskytování mediálního obsahu ve vašich aplikacích. Podobně jako MediaElement, MediaPlayer lze použít v nezávislém nebo hodinovém režimu, ale neobsahuje MediaElement uvolněné a načtené stavy objektu. Tím se snižuje složitost ovládání přehrávání MediaPlayer.

Ovládání mediaplayeru

Vzhledem k tomu MediaPlayer , že je bezstavová, existují pouze dva způsoby, jak ovládat přehrávání médií.

  1. Interaktivní řídicí metody. Na místě, když je v režimu nezávislém (nullClock vlastnost).

  2. MediaClock. Na místě v případě, že média mají Clock.

Zobrazení mediaplayeru

MediaPlayer nelze technicky zobrazit, protože nemá žádnou fyzickou podobu. Dá se ale použít k prezentaci médií v Drawing rámci VideoDrawing třídy. Následující příklad ukazuje použití VideoDrawing k zobrazení média.

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

Další informace o Drawing objektů.

Viz také