Panoramica delle funzionalità multimediali

Le funzionalità multimediali di Windows Presentation Foundation (WPF) consentono di integrare audio e video nelle applicazioni per migliorare l'esperienza utente. In questo argomento vengono presentate le funzionalità multimediali di WPF.

API multimediali

Le MediaElement classi e MediaPlayer vengono usate per presentare contenuto audio o video. Queste classi possono essere controllate in modo interattivo o da un orologio. Queste classi possono essere usate nel controllo Microsoft Lettore multimediale Windows 10 per la riproduzione multimediale. La classe da usare dipende dallo scenario.

MediaElement è un UIElement oggetto supportato dal layout e può essere utilizzato come contenuto di molti controlli. È anche utilizzabile in XAML (Extensible Application Markup Language) e nel codice. MediaPlayer, d'altra parte, è progettato per Drawing gli oggetti e non supporta il layout. I supporti caricati tramite un MediaPlayer oggetto possono essere presentati solo usando un VideoDrawing oggetto o tramite l'interazione diretta con un oggetto DrawingContext. MediaPlayer non può essere usato in XAML.

Per altre informazioni sugli oggetti e sul contesto di disegno, vedere Cenni preliminari sugli oggetti Drawing.

Nota

Quando si distribuiscono elementi multimediali con l'applicazione, non è possibile usare un file multimediale come risorsa di progetto. È necessario invece impostare il tipo di contenuto multimediale su Content nel file del progetto e CopyToOutputDirectory su PreserveNewest o su Always.

Modalità di riproduzione di elementi multimediali

Nota

Sia MediaElement che MediaPlayer hanno membri simili. I collegamenti in questa sezione fanno riferimento ai membri della MediaElement classe. A meno che non venga specificato in modo specifico, anche i membri collegati a nella MediaElement classe sono disponibili nella MediaPlayer classe .

Per comprendere la riproduzione multimediale in Windows Presentation Foundation (WPF), è necessario conoscere le diverse modalità di riproduzione dei supporti. Sia MediaElement che MediaPlayer possono essere usati in due diverse modalità multimediali, modalità indipendente e modalità orologio. La modalità multimediale è determinata dalla Clock proprietà . Quando Clock è null, l'oggetto multimediale è in modalità indipendente. Quando l'oggetto Clock è diverso da Null, l'oggetto multimediale è in modalità clock. Per impostazione predefinita, gli oggetti multimediali sono in modalità indipendente.

Modalità indipendente

In modalità indipendente la riproduzione dei contenuti multimediali dipende dai contenuti stessi. Questa modalità presenta le opzioni seguenti:

  • Uri I supporti possono essere specificati direttamente.

  • È possibile controllare direttamente la riproduzione degli elementi multimediali.

  • Le proprietà e SpeedRatio dei Position supporti possono essere modificate.

Il supporto viene caricato impostando la MediaElement proprietà dell'oggetto Source o chiamando il MediaPlayer metodo dell'oggetto Open .

Per controllare la riproduzione degli elementi multimediali in modalità indipendente, è possibile usare i metodi di controllo dell'oggetto multimediale. I metodi di controllo disponibili sono Play, Pause, Closee Stop. Per MediaElement, il controllo interattivo che usa questi metodi è disponibile solo quando LoadedBehavior è impostato su Manual. Questi metodi non sono disponibili quando l'oggetto multimediale è in modalità orologio.

Vedere Controllare un oggetto MediaElement (Play, Pause, Stop, Volume e Speed) per un esempio della modalità indipendente.

Modalità orologio

In modalità clock, un'unità MediaTimeline di riproduzione multimediale. La modalità orologio presenta le caratteristiche seguenti:

  • I supporti sono Uri impostati indirettamente tramite un oggetto MediaTimeline.

  • La riproduzione degli elementi multimediali può essere controllata dall'orologio. Non è possibile usare i metodi di controllo dell'oggetto multimediale.

  • Il supporto viene caricato impostando la proprietà di Source un MediaTimeline oggetto, creando l'orologio dalla sequenza temporale e assegnando l'orologio all'oggetto multimediale. Il supporto viene caricato anche in questo modo quando un oggetto all'interno di un MediaTimelineStoryboard oggetto è destinato a un oggetto MediaElement.

Per controllare la riproduzione multimediale in modalità orologio, è necessario utilizzare i metodi di ClockController controllo. Un ClockController oggetto viene ottenuto dalla ClockController proprietà dell'oggetto MediaClock. Se si tenta di utilizzare i metodi di controllo di un MediaElement oggetto o MediaPlayer in modalità clock, verrà generata un'eccezione InvalidOperationException .

Per altre informazioni sugli orologi e sulle sequenze temporali, vedere Cenni preliminari sull'animazione.

Vedere Controllare un MediaElement utilizzando uno storyboard per un esempio della modalità orologio.

Classe MediaElement

L'aggiunta di supporti a un'applicazione è semplice come l'aggiunta di un MediaElement controllo all'interfaccia utente dell'applicazione e l'aggiunta di un elemento Uri al supporto da includere. Tutti i tipi di supporti supportati da Microsoft Lettore multimediale Windows 10 sono supportati in Windows Presentation Foundation (WPF). L'esempio seguente illustra un semplice utilizzo di MediaElement in 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>

In questo esempio gli elementi multimediali vengono riprodotti automaticamente appena vengono caricati. Al termine della riproduzione gli elementi multimediali vengono chiusi e tutte le risorse multimediali rilasciate (inclusa la memoria video). Si tratta del comportamento predefinito dell'oggetto MediaElement ed è controllato dalle LoadedBehavior proprietà e UnloadedBehavior .

Controllo di un oggetto MediaElement

Le LoadedBehavior proprietà e UnloadedBehavior controllano rispettivamente il comportamento di MediaElement quando IsLoaded è true o false. Le MediaState proprietà sono impostate per influire sul comportamento di riproduzione multimediale. Ad esempio, il valore predefinito è e il valore predefinito LoadedBehaviorUnloadedBehavior è Close.Play Ciò significa che non appena MediaElement viene caricato e il preroll è completo, il supporto inizia a essere riprodotto. Al termine della riproduzione gli elementi multimediali vengono chiusi e tutte le risorse multimediali rilasciate.

Le LoadedBehavior proprietà e UnloadedBehavior non sono l'unico modo per controllare la riproduzione multimediale. In modalità orologio, l'orologio può controllare e MediaElement i metodi di controllo interattivo hanno il controllo quando è LoadedBehaviorManual. MediaElement gestisce questa concorrenza per il controllo valutando le priorità seguenti.

  1. UnloadedBehavior. Disponibile quando vengono scaricati gli elementi multimediali. In questo modo tutte le risorse multimediali vengono rilasciate per impostazione predefinita, anche quando un oggetto MediaClock è associato a MediaElement.

  2. MediaClock. Sul posto quando i supporti hanno un oggetto Clock. Se il supporto viene scaricato, l'oggetto MediaClock avrà effetto finché UnloadedBehavior è Manual. La modalità clock esegue sempre l'override del comportamento caricato di MediaElement.

  3. LoadedBehavior. Disponibile quando vengono caricati gli elementi multimediali.

  4. Metodi di controllo interattivi. Sul posto quando LoadedBehavior è Manual. I metodi di controllo disponibili sono Play, Pause, Closee Stop.

Visualizzazione di un oggetto MediaElement

Per visualizzare un MediaElement oggetto deve avere contenuto da eseguire per il rendering e ActualWidth le relative proprietà e ActualHeight saranno impostate su zero fino al caricamento del contenuto. Per contenuti esclusivamente audio, il valore di queste proprietà è sempre zero. Per il contenuto video, dopo che l'evento MediaOpened è stato generato ActualWidth e ActualHeight segnala le dimensioni dei supporti caricati. Ciò significa che fino a quando non viene caricato il supporto, l'oggetto MediaElement non occupa spazio fisico nell'interfaccia utente a meno che non siano impostate le Width proprietà o Height .

L'impostazione di entrambe le Width proprietà e Height causerà l'estensione del supporto per riempire l'area specificata per .MediaElement Per mantenere le proporzioni originali del supporto, è necessario impostare la Width proprietà o Height ma non entrambe. L'impostazione di entrambe le Width proprietà e Height causerà la presenza del supporto in una dimensione di elemento fissa che potrebbe non essere auspicabile.

Per evitare di avere un elemento a dimensione fissa che Windows Presentation Foundation (WPF) può prerollare il supporto. Questa operazione viene eseguita impostando su LoadedBehaviorPlay o Pause. In uno Pause stato, il supporto preregistrerà e presenterà il primo fotogramma. In uno Play stato, i supporti preregistreranno e inizieranno a essere riprodotti.

Classe MediaPlayer

Dove la MediaElement classe è un elemento framework, la MediaPlayer classe è progettata per essere usata negli Drawing oggetti . Gli oggetti disegno vengono usati quando è possibile sacrificare le funzionalità a livello di framework per ottenere vantaggi in termini di prestazioni o quando sono necessarie Freezable funzionalità. MediaPlayer consente di sfruttare queste funzionalità fornendo contenuti multimediali nelle applicazioni. Come MediaElement, MediaPlayer può essere usato in modalità indipendente o clock, ma non ha MediaElement gli stati scaricati e caricati dell'oggetto. In questo modo si riduce la complessità del controllo di riproduzione di MediaPlayer.

Controllo di un oggetto MediaPlayer

Poiché MediaPlayer è senza stato, esistono solo due modi per controllare la riproduzione multimediale.

  1. Metodi di controllo interattivi. Sul posto quando è in modalità indipendente (nullClock proprietà).

  2. MediaClock. Sul posto quando i supporti hanno un oggetto Clock.

Visualizzazione di un oggetto MediaPlayer

Tecnicamente, non è possibile visualizzare un oggetto MediaPlayer perché non ha alcuna rappresentazione fisica. Tuttavia, può essere usato per presentare supporti in un Drawing oggetto usando la VideoDrawing classe . Nell'esempio seguente viene illustrato l'uso di un VideoDrawing oggetto per visualizzare i supporti.

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

Per altre informazioni sugli oggetti, vedere Cenni preliminari sugli Drawing oggetti disegno.

Vedi anche