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í

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

MediaElementje 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 musíte místo toho 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 také nalezeny MediaPlayer ve třídě.

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:

  • Uri Média je možné zadat přímo.

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

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

Médium se načte buď nastavením vlastnosti objektuSource, nebo voláním MediaPlayer metody objektuOpen.MediaElement

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řízení pomocí těchto metod je k dispozici pouze v případě, že je nastavena LoadedBehavior na Manualhodnotu . 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 režimu MediaTimeline hodin řídí přehrávání médií. Režim hodin má následující charakteristiky:

  • Uri Média jsou nepřímo nastavena MediaTimelineprostřednictvím .

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

  • Médium se načte nastavením MediaTimeline vlastnosti objektu Source , vytvořením hodin z časové osy a přiřazením hodin k objektu médií. Médium je také načteno tímto způsobem, když MediaTimeline uvnitř Storyboard cíle .MediaElement

Chcete-li ovládat přehrávání médií v režimu hodin, ClockController je nutné použít ovládací metody. 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 .

MediaElement – třída

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é společností Microsoft Přehrávač médií Windows 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ě paměti videa). Toto je výchozí chování objektu MediaElement a je řízeno LoadedBehavior vlastnostmi a UnloadedBehavior vlastnostmi.

Řízení mediaElementu

Vlastnosti LoadedBehavior řídí UnloadedBehavior chování MediaElement , kdy IsLoaded je true 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ý, médium 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.

UnloadedBehavior A LoadedBehavior vlastnosti nejsou jediným způsobem, jak ovládat přehrávání médií. V režimu hodin mohou hodiny řídit a interaktivní ovládací metody mají ovládací MediaElement prvek, pokud LoadedBehavior je Manual. 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 zajistíte, že všechny mediální prostředky budou ve výchozím nastavení vydány, i když je přidružen k MediaClockMediaElement.

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

  3. LoadedBehavior. Na místě při 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

Pokud chcete zobrazit MediaElement obsah, který se má vykreslit, a jeho ActualWidth vlastnosti ActualHeight budou nastaveny na nulu, dokud se obsah nenačte. U obsahu pouze zvuku jsou tyto vlastnosti vždy nulové. U videoobsáhu MediaOpened se po vyvolání ActualWidth události zobrazí ActualHeight zpráva o velikosti načteného média. To znamená, že dokud se nenačte médium, MediaElement nezabírají žádné fyzické místo v uživatelském rozhraní (UI), pokud nejsou nastaveny Width vlastnosti.Height

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

Chcete-li zabránit tomu, aby byl prvek s pevnou velikostí, který může prerollovat média windows Presentation Foundation (WPF). To se provádí nastavením LoadedBehavior na buď Play nebo Pause. Pause Ve stavu se médium předem zapíše a zobrazí první snímek. V nějakém Play stavu se médium předpíše a začne se přehrávat.

MediaPlayer – třída

Kde jako MediaElement třída je prvek architektury, třída je navržena tak, MediaPlayer aby byla použita v Drawing objektech. Nakreslené objekty se používají, když můžete obětovat funkce na úrovni architektury, 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 MediaPlayerovládání přehrávání .

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ž v nezávislém režimu (nullClock vlastnost).

  2. MediaClock. Na místě, když média mají Clock.

Zobrazení mediaplayeru

Technicky vzato se nedá zobrazit, MediaPlayer protože nemá žádnou fyzickou reprezentaci. 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 objektech najdete v přehledu nakreslených objektů.

Viz také