Vue d’ensemble multimédia

Les fonctionnalités multimédias de Windows Presentation Foundation (WPF) vous permettent d’intégrer l’audio et la vidéo dans vos applications pour améliorer l’expérience utilisateur. Cette rubrique présente les fonctionnalités multimédias de WPF.

API Media

Les MediaElement classes et MediaPlayer les classes sont utilisées pour présenter du contenu audio ou vidéo. Ces classes peuvent être contrôlées interactivement ou par une horloge. Ces classes peuvent être utilisées sur le contrôle Microsoft Lecteur multimédia Windows 10 pour la lecture multimédia. La classe que vous allez utiliser dépend du scénario.

MediaElement est un UIElement élément pris en charge par la disposition et qui peut être consommé comme contenu de nombreux contrôles. Il est également utilisable dans XAML (Extensible Application Markup Language) ainsi que dans le code. MediaPlayer, d’autre part, est conçu pour Drawing les objets et ne prend pas en charge la disposition. Le média chargé à l’aide d’un MediaPlayer objet ne peut être présenté qu’à l’aide d’un VideoDrawing ou en interagissant directement avec un DrawingContext. MediaPlayer ne peut pas être utilisé en XAML.

Pour plus d’informations sur les objets de dessin et le contexte de dessin, consultez Vue d’ensemble des objets Drawing.

Remarque

Lorsque vous distribuez un contenu multimédia avec votre application, vous ne pouvez pas utiliser de fichier multimédia comme ressource de projet. Dans votre fichier projet, vous devez plutôt définir le type de média sur Content et définir CopyToOutputDirectory sur PreserveNewest ou Always.

Modes de lecture de médias

Remarque

Les deux MediaElement et MediaPlayer ont des membres similaires. Les liens de cette section font référence aux membres de la MediaElement classe. Sauf indication particulière, les membres liés à la MediaElement classe peuvent également être trouvés dans la MediaPlayer classe.

Pour comprendre la lecture multimédia dans Windows Presentation Foundation (WPF), une compréhension des différents modes dans lesquels le média peut être lu est nécessaire. Les deux MediaElement et MediaPlayer peuvent être utilisés dans deux modes multimédias différents, le mode indépendant et le mode horloge. Le mode multimédia est déterminé par la Clock propriété. Quand Clock c’est nullle cas, l’objet multimédia est en mode indépendant. Lorsque la Clock valeur est non null, l’objet multimédia est en mode horloge. Par défaut, les objets médias sont en mode indépendant.

Mode indépendant

En mode indépendant, le contenu du média déclenche la lecture du média. Le mode indépendant comprend les options suivantes :

  • Uri Les supports peuvent être spécifiés directement.

  • La lecture du média peut être directement contrôlée.

  • Les propriétés et SpeedRatio les Position médias peuvent être modifiées.

Le support est chargé en définissant la propriété de l’objet MediaElementSource ou en appelant la méthode de l’objet MediaPlayerOpen .

Pour contrôler la lecture du média en mode indépendant, les méthodes de contrôle de l’objet média peuvent être utilisées. Les méthodes de contrôle disponibles sont Play, Pause, Closeet Stop. Pour MediaElement, le contrôle interactif utilisant ces méthodes n’est disponible que lorsque l’option LoadedBehavior est définie Manualsur . Ces méthodes ne sont pas disponibles lorsque l’objet média est en mode horloge.

Consultez la page Contrôler un MediaElement (lecture, pause, arrêt, volume et vitesse) pour obtenir un exemple de mode indépendant.

Mode horloge

En mode horloge, un MediaTimeline lecteur de lecture multimédia. Le mode horloge présente les caractéristiques suivantes :

  • Les médias sont indirectement définis par le biais d’un UriMediaTimeline.

  • La lecture du média peut être contrôlée par l’horloge. Les méthodes de contrôle de l’objet média ne peuvent pas être utilisées.

  • Le support est chargé en définissant la propriété d’un MediaTimelineSource objet, en créant l’horloge à partir de l’chronologie et en affectant l’horloge à l’objet multimédia. Le média est également chargé de cette façon lorsqu’un MediaTimeline intérieur d’une Storyboard cible a MediaElement.

Pour contrôler la lecture multimédia en mode horloge, les ClockController méthodes de contrôle doivent être utilisées. A ClockController est obtenu à partir de la ClockController propriété du MediaClock. Si vous tentez d’utiliser les méthodes de contrôle d’un ou MediaPlayer d’un MediaElement objet en mode horloge, une InvalidOperationException opération est levée.

Pour plus d’informations sur les horloges et les chronologies, consultez l’article Vue d’ensemble de l’animation.

Pour obtenir un exemple du mode horloge, consultez la page Contrôler un MediaElement à l’aide d’un Storyboard.

Classe MediaElement

L’ajout de médias à une application est aussi simple que l’ajout d’un MediaElement contrôle à l’interface utilisateur de l’application et la fourniture d’un Uri média que vous souhaitez inclure. Tous les types de supports pris en charge par Microsoft Lecteur multimédia Windows 10 sont pris en charge dans Windows Presentation Foundation (WPF). L’exemple suivant montre une utilisation simple du MediaElement langage 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>

Dans cet exemple, le média est lu automatiquement dès qu’il est chargé. Une fois la lecture du média terminée, le média est fermé et toutes les ressources du média sont libérées (y compris la mémoire vidéo). Il s’agit du comportement par défaut de l’objet MediaElement et est contrôlé par les propriétés et UnloadedBehavior les LoadedBehavior propriétés.

Contrôler un MediaElement

Les LoadedBehavior propriétés et UnloadedBehavior les propriétés contrôlent le comportement du MediaElement moment IsLoadedtrue ou false, respectivement. Les MediaState propriétés sont définies pour affecter le comportement de lecture multimédia. Par exemple, la valeur par défaut est et la valeur par défaut LoadedBehaviorUnloadedBehavior est Close.Play Cela signifie que dès que le MediaElement chargement est chargé et que le préroll est terminé, le média commence à jouer. Une fois la lecture terminée, le média est fermé et toutes les ressources du média sont libérées.

Les LoadedBehavior propriétés et UnloadedBehavior les propriétés ne sont pas la seule façon de contrôler la lecture multimédia. En mode horloge, l’horloge peut contrôler et MediaElement les méthodes de contrôle interactives ont le contrôle lorsque l’est LoadedBehaviorManual. MediaElement gère cette concurrence pour le contrôle en évaluant les priorités suivantes.

  1. UnloadedBehavior. Actif lorsque le média est déchargé. Cela garantit que toutes les ressources multimédias sont publiées par défaut, même lorsqu’une MediaClock ressource est associée au MediaElement.

  2. MediaClock. En place lorsque le média a un Clock. Si le média est déchargé, l’effet MediaClock prend effet tant que l’objet UnloadedBehavior est Manual. Le mode horloge remplace toujours le comportement chargé du MediaElement.

  3. LoadedBehavior. Actif lorsque le média est chargé.

  4. Méthodes de contrôle interactives. En place quand LoadedBehavior est Manual. Les méthodes de contrôle disponibles sont Play, Pause, Closeet Stop.

Afficher un MediaElement

Pour afficher un MediaElement contenu à afficher, ses propriétés et ActualHeight ses ActualWidth propriétés sont définies sur zéro jusqu’à ce que le contenu soit chargé. Pour du contenu purement audio, ces propriétés sont toujours égales à zéro. Pour le contenu vidéo, une fois que l’événement MediaOpened a été déclenché ActualWidth et ActualHeight signale la taille du média chargé. Cela signifie que tant que le média n’est pas chargé, l’espace MediaElement physique n’est pas pris en charge dans l’interface utilisateur, sauf si les propriétés ou Height les Width propriétés sont définies.

La définition des Width propriétés entraîne Height l’étirement du média pour remplir la zone fournie pour le MediaElement. Pour conserver le rapport d’aspect d’origine du média, la ou Height la Width propriété doit être définie, mais pas les deux. La définition des Width propriétés entraîne Height la présence du média dans une taille d’élément fixe qui peut ne pas être souhaitable.

Pour éviter d’avoir un élément de taille fixe qui, Windows Presentation Foundation (WPF) peut préinscrire le média. Pour ce faire, définissez la LoadedBehavior valeur sur Play ou Pause. Dans un Pause état, le média prérolle et présente la première image. Dans un Play état, le média prérolle et commence à jouer.

Classe MediaPlayer

Où la MediaElement classe est un élément framework, la MediaPlayer classe est conçue pour être utilisée dans Drawing les objets. Les objets de dessin sont utilisés lorsque vous pouvez sacrifier les fonctionnalités au niveau de l’infrastructure pour obtenir des avantages en matière de performances ou quand vous avez besoin de Freezable fonctionnalités. MediaPlayer vous permet de tirer parti de ces fonctionnalités tout en fournissant du contenu multimédia dans vos applications. Comme MediaElement, MediaPlayer peut être utilisé en mode indépendant ou horloge, mais n’a pas les états déchargés et chargés de l’objet MediaElement . Cela réduit la complexité du contrôle de lecture du MediaPlayer.

Contrôler un MediaPlayer

Étant donné que MediaPlayer l’état est sans état, il n’existe que deux façons de contrôler la lecture multimédia.

  1. Méthodes de contrôle interactives. En place en mode indépendant (nullClock propriété).

  2. MediaClock. En place lorsque le média a un Clock.

Afficher un MediaPlayer

Techniquement, une MediaPlayer image ne peut pas être affichée, car elle n’a aucune représentation physique. Toutefois, il peut être utilisé pour présenter des supports dans une Drawing classe à l’aide de la VideoDrawing classe. L’exemple suivant illustre l’utilisation d’un VideoDrawing média pour afficher un 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();

Pour plus d’informations sur les objets, consultez la vue d’ensembleDrawing des objets de dessin.

Voir aussi