Bagikan melalui


Gambaran Umum Multimedia

Fitur multimedia di Windows Presentation Foundation (WPF) memungkinkan Anda mengintegrasikan audio dan video ke dalam aplikasi Anda untuk meningkatkan pengalaman pengguna. Topik ini memperkenalkan fitur multimedia WPF.

Media API

Kelas MediaElement dan MediaPlayer digunakan untuk menyajikan konten audio atau video. Kelas-kelas ini dapat dikontrol secara interaktif atau berdasarkan jam. Kelas-kelas ini dapat digunakan pada kontrol Microsoft Pemutar Media Windows 10 untuk pemutaran media. Kelas mana yang Anda gunakan, tergantung pada skenarionya.

MediaElementUIElement adalah yang didukung oleh Tata Letak dan dapat dikonsumsi sebagai konten dari banyak kontrol. Ini juga dapat digunakan dalam Extensible Application Markup Language (XAML) serta kode. MediaPlayer, di sisi lain, dirancang untuk Drawing objek dan tidak memiliki dukungan tata letak. Media yang MediaPlayer dimuat menggunakan hanya dapat disajikan menggunakan VideoDrawing atau dengan berinteraksi langsung dengan DrawingContext. MediaPlayer tidak dapat digunakan dalam XAML.

Untuk informasi selengkapnya tentang menggambar objek dan konteks gambar, lihat Gambaran Umum Objek Gambar.

Catatan

Saat mendistribusikan media dengan aplikasi, Anda tidak dapat menggunakan file media sebagai sumber daya proyek. Dalam file proyek, Anda harus mengatur jenis media ke Content dan mengatur CopyToOutputDirectory ke PreserveNewest atau Always.

Mode Pemutaran Media

Catatan

Keduanya MediaElement dan MediaPlayer memiliki anggota serupa. Tautan di bagian ini merujuk ke MediaElement anggota kelas. Kecuali disebutkan secara khusus, anggota yang ditautkan di MediaElement kelas juga dapat ditemukan di MediaPlayer kelas .

Untuk memahami pemutaran media di Windows Presentation Foundation (WPF), pemahaman tentang berbagai mode di mana media dapat diputar diperlukan. Keduanya MediaElement dan MediaPlayer dapat digunakan dalam dua mode media yang berbeda, mode independen dan mode jam. Mode media ditentukan oleh Clock properti . Ketika Clock adalah null, objek media dalam mode independen. Clock Ketika non-null, objek media berada dalam mode jam. Secara default, objek media berada dalam mode independen.

Mode Independen

Dalam mode independen, konten media mendorong pemutaran media. Mode independen memungkinkan opsi berikut:

  • Uri Media dapat ditentukan secara langsung.

  • Pemutaran media dapat dikontrol secara langsung.

  • Position Properti dan SpeedRatio media dapat dimodifikasi.

Media dimuat dengan mengatur MediaElement properti objek Source atau dengan memanggil MediaPlayer metode objek Open .

Untuk mengontrol pemutaran media dalam mode independen, metode kontrol objek media dapat digunakan. Metode kontrol yang tersedia adalah Play, , PauseClose, dan Stop. Untuk MediaElement, kontrol interaktif menggunakan metode ini hanya tersedia ketika LoadedBehavior diatur ke Manual. Metode ini tidak tersedia ketika objek media dalam mode jam.

Lihat Mengontrol MediaElement (Putar, Jeda, Berhenti, Volume, dan Kecepatan) untuk contoh mode independen.

Mode Jam

Dalam mode jam, MediaTimeline drive pemutaran media. Mode jam memiliki karakteristik berikut:

  • Uri Media secara tidak langsung diatur melalui MediaTimeline.

  • Pemutaran media dapat dikontrol oleh jam. Metode kontrol objek media tidak dapat digunakan.

  • Media dimuat dengan mengatur MediaTimeline properti objek Source , membuat jam dari garis waktu, dan menetapkan jam ke objek media. Media juga dimuat dengan cara ini ketika MediaTimeline di dalam Storyboard menargetkan MediaElement.

Untuk mengontrol pemutaran media dalam mode jam, ClockController metode kontrol harus digunakan. ClockController diperoleh dari ClockController properti .MediaClock Jika Anda mencoba menggunakan metode kontrol objek MediaElement atau MediaPlayer saat dalam mode jam, akan InvalidOperationException dilemparkan.

Lihat Gambaran Umum Animasi untuk informasi selengkapnya tentang jam dan garis waktu.

Lihat Mengontrol MediaElement dengan Menggunakan Storyboard untuk contoh mode jam.

Kelas MediaElement

Menambahkan media ke aplikasi semampu menambahkan MediaElement kontrol ke antarmuka pengguna (UI) aplikasi dan menyediakan ke media yang Uri ingin Anda sertakan. Semua jenis media yang didukung oleh Microsoft Pemutar Media Windows 10 didukung di Windows Presentation Foundation (WPF). Contoh berikut menunjukkan penggunaan MediaElement sederhana dalam Extensible Application Markup Language (XAML).

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

Dalam sampel ini, media diputar secara otomatis segera setelah dimuat. Setelah media selesai diputar, media ditutup dan semua sumber daya media dirilis (termasuk memori video). Ini adalah perilaku MediaElement default objek dan dikontrol oleh LoadedBehavior properti dan UnloadedBehavior .

Mengontrol MediaElement

Properti LoadedBehavior dan UnloadedBehavior mengontrol perilaku MediaElement kapan IsLoaded adalah true atau false, masing-masing. Properti MediaState diatur untuk memengaruhi perilaku pemutaran media. Misalnya, defaultnya LoadedBehavior adalah Play dan defaultnya UnloadedBehavior adalah Close. Ini berarti bahwa segera setelah MediaElement dimuat dan pra-pendaftaran selesai, media mulai bermain. Setelah pemutaran selesai, media ditutup dan semua sumber daya media dirilis.

Properti LoadedBehavior dan UnloadedBehavior bukan satu-satunya cara untuk mengontrol pemutaran media. Dalam mode jam, jam dapat mengontrol MediaElement dan metode kontrol interaktif memiliki kontrol ketika LoadedBehavior adalah Manual. MediaElement menangani kompetisi ini untuk kontrol dengan mengevaluasi prioritas berikut.

  1. UnloadedBehavior. Di tempat ketika media dibongkar. Ini memastikan bahwa semua sumber daya media dirilis secara default, bahkan ketika MediaClock dikaitkan dengan MediaElement.

  2. MediaClock. Di tempat ketika media memiliki Clock. Jika media dibongkar, MediaClock akan berlaku selama UnloadedBehavior adalah Manual. Mode jam selalu mengambil alih perilaku yang MediaElementdimuat dari .

  3. LoadedBehavior. Di tempat ketika media dimuat.

  4. Metode kontrol interaktif. Di tempat ketika LoadedBehavior adalah Manual. Metode kontrol yang tersedia adalah Play, , PauseClose, dan Stop.

Menampilkan MediaElement

Untuk menampilkan MediaElement isi harus memiliki konten yang akan dirender dan properti dan ActualHeight akan ActualWidth diatur ke nol hingga konten dimuat. Untuk konten audio saja, properti ini selalu nol. Untuk konten video, setelah MediaOpened peristiwa dinaikkan ActualWidth dan ActualHeight akan melaporkan ukuran media yang dimuat. Ini berarti bahwa sampai media dimuat, MediaElement tidak akan memakan ruang fisik apa pun di antarmuka pengguna (UI) kecuali Width properti atau Height diatur.

Mengatur properti Width dan Height akan menyebabkan media meregang untuk mengisi area yang disediakan untuk MediaElement. Untuk mempertahankan rasio aspek asli media, properti Width atau Height harus diatur tetapi tidak keduanya. Mengatur properti Width dan Height akan menyebabkan media hadir dalam ukuran elemen tetap yang mungkin tidak diinginkan.

Untuk menghindari memiliki elemen ukuran tetap yang mana, Windows Presentation Foundation (WPF) dapat melakukan pra-pendaftaran media. Ini dilakukan dengan mengatur ke LoadedBehavior atau PlayPause. Dalam keadaan Pause , media akan melakukan pra-pendaftaran dan akan menyajikan bingkai pertama. Dalam keadaan Play , media akan melakukan pra-pendaftaran dan mulai bermain.

Kelas MediaPlayer

Di mana karena MediaElement kelas adalah elemen kerangka kerja, MediaPlayer kelas dirancang untuk digunakan dalam Drawing objek. Objek gambar digunakan ketika Anda dapat mengorbankan fitur tingkat kerangka kerja untuk mendapatkan manfaat performa atau ketika Anda membutuhkan Freezable fitur. MediaPlayer memungkinkan Anda memanfaatkan fitur-fitur ini sambil menyediakan konten media di aplikasi Anda. Seperti MediaElement, MediaPlayer dapat digunakan dalam mode independen atau jam tetapi tidak memiliki MediaElement status objek yang dibongkar dan dimuat. Ini mengurangi kompleksitas kontrol pemutaran dari MediaPlayer.

Mengontrol MediaPlayer

Karena MediaPlayer stateless, hanya ada dua cara untuk mengontrol pemutaran media.

  1. Metode kontrol interaktif. Di tempat ketika dalam mode independen (nullClock properti).

  2. MediaClock. Di tempat ketika media memiliki Clock.

Menampilkan MediaPlayer

Secara teknis, tidak MediaPlayer dapat ditampilkan karena tidak memiliki representasi fisik. Namun, dapat digunakan untuk menyajikan media dalam Drawing menggunakan VideoDrawing kelas . Contoh berikut menunjukkan penggunaan media untuk VideoDrawing menampilkan.

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

Lihat Gambaran Umum Objek Menggambar untuk informasi selengkapnya tentang Drawing objek.

Baca juga