Przegląd Multimedia

Funkcje multimedialne w programie Windows Presentation Foundation (WPF) umożliwiają integrację audio i wideo z aplikacjami w celu ulepszenia środowiska użytkownika. W tym temacie przedstawiono funkcje multimedialne WPF.

Interfejs API multimediów

Klasy MediaElement i MediaPlayer służą do prezentowania zawartości audio lub wideo. Te klasy mogą być kontrolowane interaktywnie lub przez zegar. Te klasy mogą być używane w kontrolce Microsoft Odtwarzacz multimedialny Windows 10 na potrzeby odtwarzania multimediów. Która klasa jest używana, zależy od scenariusza.

MediaElement element jest UIElement obsługiwany przez układ i może być używany jako zawartość wielu kontrolek. Można go również używać w rozszerzalnym języku znaczników aplikacji (XAML), a także w kodzie. MediaPlayerz drugiej strony jest przeznaczony dla Drawing obiektów i nie obsługuje układu. Nośnik załadowany przy użyciu MediaPlayer elementu można prezentować tylko przy użyciu elementu VideoDrawing lub bezpośrednio korzystając z elementu DrawingContext. MediaPlayer nie można używać w języku XAML.

Aby uzyskać więcej informacji na temat obiektów rysunkowych i kontekstu rysunku, zobacz Omówienie obiektów rysunkowych.

Uwaga

Podczas dystrybucji multimediów z aplikacją nie można użyć pliku multimedialnego jako zasobu projektu. W pliku projektu należy zamiast tego ustawić typ nośnika na i ustawić Content wartość PreserveNewestCopyToOutputDirectory na lub Always.

Tryby odtwarzania multimediów

Uwaga

Oba MediaElement elementy i MediaPlayer mają podobne elementy członkowskie. Linki w tej sekcji odwołują się do MediaElement składowych klasy. O ile nie określono konkretnie, składowe połączone z klasą MediaElement również można znaleźć w MediaPlayer klasie.

Aby zrozumieć odtwarzanie multimediów w programie Windows Presentation Foundation (WPF), wymagane jest zrozumienie różnych trybów odtwarzania multimediów. Oba MediaElement i MediaPlayer mogą być używane w dwóch różnych trybach multimedialnych, trybie niezależnym i trybie zegara. Tryb nośnika Clock jest określany przez właściwość . Gdy Clock jest null, obiekt multimedialny jest w trybie niezależnym. Clock Gdy obiekt nośnika ma wartość inną niż null, jest w trybie zegara. Domyślnie obiekty multimedialne są w trybie niezależnym.

Tryb niezależny

W trybie niezależnym zawartość multimediów powoduje odtwarzanie multimediów. Tryb niezależny umożliwia następujące opcje:

  • Nośniki Uri można określić bezpośrednio.

  • Odtwarzanie multimediów można sterować bezpośrednio.

  • Właściwości i SpeedRatio nośnika Position można modyfikować.

Nośnik jest ładowany przez ustawienie MediaElement właściwości obiektu Source lub przez wywołanie MediaPlayer metody obiektu Open .

Aby kontrolować odtwarzanie multimediów w trybie niezależnym, można użyć metod sterowania obiektu multimedialnego. Dostępne metody sterowania to Play, , PauseClosei Stop. W przypadku MediaElementprogramu kontrolka interaktywna korzystająca z tych metod jest dostępna tylko wtedy, gdy jest ustawiona LoadedBehavior wartość Manual. Te metody są niedostępne, gdy obiekt nośnika jest w trybie zegara.

Zobacz Sterowanie elementem MediaElement (odtwarzanie, wstrzymywanie, zatrzymywanie, głośność i szybkość), aby zapoznać się z przykładem niezależnego trybu.

Tryb zegara

W trybie zegara odtwarzanie MediaTimeline multimediów dysków. Tryb zegara ma następujące cechy:

  • Nośniki Uri są pośrednio ustawiane za pośrednictwem .MediaTimeline

  • Odtwarzanie multimediów można sterować zegarem. Nie można użyć metod sterowania obiektu multimedialnego.

  • Nośnik jest ładowany przez ustawienie MediaTimeline właściwości obiektu Source , utworzenie zegara z osi czasu i przypisanie zegara do obiektu nośnika. Nośnik jest również ładowany w ten sposób, gdy wewnątrz MediaTimeline elementu docelowego StoryboardMediaElement.

Aby kontrolować odtwarzanie multimediów w trybie zegara, ClockController należy użyć metod sterowania. Element A ClockController jest uzyskiwany z ClockController właściwości MediaClock. Jeśli spróbujesz użyć metod sterujących MediaElement obiektu lub MediaPlayer w trybie zegara, zostanie zgłoszony element InvalidOperationException .

Aby uzyskać więcej informacji na temat zegarów i osi czasu, zobacz Omówienie animacji.

Zobacz Sterowanie elementem MediaElement przy użyciu scenorysu , aby zapoznać się z przykładem trybu zegara.

MediaElement, klasa

Dodawanie multimediów do aplikacji jest tak proste, jak dodawanie MediaElement kontrolki do interfejsu użytkownika aplikacji i udostępnianie Uri nośnika, który chcesz uwzględnić. Wszystkie typy multimediów obsługiwane przez firmę Microsoft Odtwarzacz multimedialny Windows 10 są obsługiwane w programie Windows Presentation Foundation (WPF). Poniższy przykład przedstawia proste użycie w MediaElement języku 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>

W tym przykładzie nośnik jest odtwarzany automatycznie zaraz po załadowaniu. Po zakończeniu odtwarzania multimediów nośnik zostanie zamknięty, a wszystkie zasoby multimedialne zostaną wydane (w tym pamięć wideo). Jest to domyślne zachowanie MediaElement obiektu i jest kontrolowane przez LoadedBehavior właściwości i UnloadedBehavior .

Kontrolowanie elementu MediaElement

Właściwości LoadedBehavior i UnloadedBehavior kontrolują zachowanie MediaElement wartości , gdy IsLoaded jest true lub false, odpowiednio. Właściwości MediaState są ustawione tak, aby wpływały na zachowanie odtwarzania multimediów. Na przykład wartość domyślna LoadedBehavior to Play , a wartość domyślna UnloadedBehavior to Close. Oznacza to, że po załadowaniu i zakończeniu MediaElement rejestracji wstępnej nośnik zaczyna odtwarzać. Po zakończeniu odtwarzania nośnik jest zamykany, a wszystkie zasoby multimedialne są zwalniane.

Właściwości LoadedBehavior i UnloadedBehavior nie są jedynym sposobem kontrolowania odtwarzania multimediów. W trybie zegara zegar może kontrolować MediaElement i interaktywne metody sterowania mają kontrolę, gdy LoadedBehavior jest Manual. MediaElement zajmuje się tą konkurencją w zakresie kontroli, oceniając następujące priorytety.

  1. UnloadedBehavior. W miejscu, gdy nośnik jest zwalniany. Gwarantuje to, że wszystkie zasoby multimedialne są domyślnie zwalniane, nawet jeśli element MediaClock jest skojarzony z elementem MediaElement.

  2. MediaClock. W miejscu, gdy nośnik ma element Clock. Jeśli nośnik zostanie zwolniony, MediaClock element zacznie obowiązywać tak długo, jak ma wartość ManualUnloadedBehavior . Tryb zegara zawsze zastępuje załadowane zachowanie elementu MediaElement.

  3. LoadedBehavior. W miejscu, gdy nośnik jest ładowany.

  4. Metody sterowania interakcyjnego. W miejscu, gdy LoadedBehavior ma wartość Manual. Dostępne metody sterowania to Play, , PauseClosei Stop.

Wyświetlanie elementu MediaElement

Aby wyświetlić zawartość do renderowaniaMediaElement, a jej właściwości i ActualHeight będą ActualWidth miały wartość zero do momentu załadowania zawartości. W przypadku zawartości tylko audio te właściwości są zawsze zerowe. W przypadku zawartości wideo po podniesieniu MediaOpenedActualWidth zdarzenia i ActualHeight zgłosi rozmiar załadowanego nośnika. Oznacza to, że dopóki nośnik nie zostanie załadowany, MediaElement nie zajmie miejsca fizycznego w interfejsie użytkownika, chyba że Width ustawiono właściwości lub Height .

Ustawienie właściwości Width i Height spowoduje rozciągnięcie nośnika w celu wypełnienia obszaru podanego dla elementu MediaElement. Aby zachować oryginalny współczynnik proporcji nośnika, należy ustawić właściwość lubHeight, Width ale nie obie. Ustawienie właściwości Width i Height spowoduje, że nośnik będzie obecny w stałym rozmiarze elementu, który może nie być pożądany.

Aby uniknąć stałego rozmiaru elementu, który program Windows Presentation Foundation (WPF) może wstępnie wyrejestrować nośnik. Można to zrobić, ustawiając wartość na LoadedBehaviorPlay wartość lub Pause. Pause W stanie media będą wstępnie wyrejestrowywania i przedstawią pierwszą ramkę. Play W stanie media będą wstępnie wyrejestrować i zacząć grać.

MediaPlayer, klasa

Gdzie jako MediaElement klasa jest elementem struktury, MediaPlayer klasa jest przeznaczona do użycia w Drawing obiektach. Obiekty rysunkowe są używane, gdy można poświęcić funkcje na poziomie platformy, aby uzyskać korzyści z wydajności lub gdy potrzebujesz Freezable funkcji. MediaPlayer Umożliwia korzystanie z tych funkcji podczas udostępniania zawartości multimedialnej w aplikacjach. Podobnie jak MediaElement, MediaPlayer można używać w trybie niezależnym lub zegarowym, ale nie ma MediaElement stanu rozładowanego i załadowanego obiektu. Zmniejsza to złożoność sterowania odtwarzaniem obiektu MediaPlayer.

Kontrolowanie odtwarzacza multimediów

Ponieważ MediaPlayer jest bezstanowy, istnieją tylko dwa sposoby kontrolowania odtwarzania multimediów.

  1. Metody sterowania interakcyjnego. W miejscu, gdy w trybie niezależnym (nullClock właściwość).

  2. MediaClock. W miejscu, gdy nośnik ma element Clock.

Wyświetlanie odtwarzacza MediaPlayer

Technicznie nie można wyświetlić elementu MediaPlayer , ponieważ nie ma fizycznej reprezentacji. Można go jednak użyć do prezentowania multimediów w Drawing klasie przy użyciu VideoDrawing klasy . W poniższym przykładzie pokazano użycie obiektu VideoDrawing do wyświetlania multimediów.

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

Aby uzyskać więcej informacji na temat Drawing obiektów, zobacz Omówienie obiektów rysunkowych.

Zobacz też