Aracılığıyla paylaş


Multimedyaya Genel Bakış

Windows Presentation Foundation'daki (WPF) multimedya özellikleri, kullanıcı deneyimini geliştirmek için ses ve videoyu uygulamalarınızla tümleştirmenizi sağlar. Bu konu başlığında WPF'nin multimedya özellikleri tanıtılmaktadır.

Medya API'si

MediaElement ve MediaPlayer sınıfları ses veya video içeriği sunmak için kullanılır. Bu sınıflar etkileşimli olarak veya bir saatle denetlenebilir. Bu sınıflar, medya kayıttan yürütme için Microsoft Windows Media Player 10 denetiminde kullanılabilir. Hangi sınıfı kullandığınız senaryoya bağlıdır.

MediaElement, UIElement tarafından desteklenen ve birçok denetimin içeriği olarak kullanılabilecek bir öğesidir. Genişletilebilir Uygulama biçimlendirme dili (XAML) ve kodda da kullanılabilir. MediaPlayer, ise Drawing nesneler için tasarlanmıştır ve düzen desteğinden yoksundur. MediaPlayer kullanılarak yüklenen medya yalnızca VideoDrawing kullanılarak veya doğrudan DrawingContext ile etkileşim kurarak sunulabilir. MediaPlayer XAML'de kullanılamaz.

Nesneleri çizme ve çizim bağlamı hakkında daha fazla bilgi için bkz. Çizim Nesnelerine Genel Bakış.

Uyarı

Medyayı uygulamanızla dağıtırken, bir medya dosyasını proje kaynağı olarak kullanamazsınız. Proje dosyanızda, bunun yerine medya türünü Content ve CopyToOutputDirectoryPreserveNewest veya Alwaysolarak ayarlamanız gerekir.

Medya Oynatma Modları

Uyarı

Hem MediaElement, hem de MediaPlayer benzer üyelere sahiptir. Bu bölümdeki bağlantılar MediaElement sınıf üyelerine atıfta bulunur. Özellikle belirtilmediği sürece, MediaElement sınıfında yer alan üyeler MediaPlayer sınıfında da bulunabilir.

Windows Presentation Foundation'da (WPF) medya kayıttan yürütmeyi anlamak için, medyanın oynatılabildiği farklı modların anlaşılması gerekir. MediaElement ve MediaPlayer her ikisi de bağımsız mod ve saat modu olmak üzere iki farklı medya modunda kullanılabilir. Medya modu, Clock özelliği tarafından belirlenir. Clock null olduğunda, medya nesnesi bağımsız moddadır. Clock null olmadığında, medya nesnesi saat modundadır. Varsayılan olarak, medya nesneleri bağımsız moddadır.

Bağımsız Mod

Bağımsız modda, medya içeriği medya kayıttan yürütmeyi yönetir. Bağımsız mod aşağıdaki seçenekleri etkinleştirir:

  • Medya Uri doğrudan belirtilebilir.

  • Medya oynatımı doğrudan kontrol edilebilir.

  • Medyanın Position ve SpeedRatio özellikleri değiştirilebilir.

Medya, ya MediaElement nesnesinin Source özelliği ayarlanarak ya da MediaPlayer nesnesinin Open yöntemi çağrılarak yüklenir.

Medya oynatmayı bağımsız modda kontrol etmek için, medya nesnesinin kontrol yöntemleri kullanılabilir. Kullanılabilir denetim yöntemleri : Play, Pause, Closeve Stop. içinMediaElement, bu yöntemleri kullanan etkileşimli denetim yalnızca olarak ayarlandığında LoadedBehaviorkullanılabilirManual. Medya nesnesi saat modundayken bu yöntemler kullanılamaz.

Bağımsız mod örneği için bkz. MediaElement'i Denetleme (Oynatma, Duraklatma, Durdurma, Ses Düzeyi ve Hız ).

Saat Modu

Saat modunda, medya kayıttan yürütmeyi MediaTimeline kontrol eder. Saat modu aşağıdaki özelliklere sahiptir:

  • Medya Uri, bir MediaTimeline aracılığıyla dolaylı olarak ayarlanır.

  • Medya oynatma saat tarafından kontrol edilebilir. Medya nesnesinin denetim yöntemleri kullanılamaz.

  • Medya, nesnenin MediaTimelineSource özelliği ayarlanarak, zaman çizelgesinden saat oluşturularak ve medya nesnesine saat atanarak yüklenir. Medya, MediaTimeline içindeki bir StoryboardMediaElement öğesini hedeflediğinde bu şekilde yüklenir.

Saat modunda medya oynatımını kontrol etmek için ClockController kontrol yöntemleri kullanılmalıdır. ClockController, ClockController özelliğinden MediaClock ile alınır. Saat modundayken bir MediaElement veya MediaPlayer nesnesinin denetim yöntemlerini kullanmayı denerseniz, bir InvalidOperationException oluşturulur.

Saatler ve zaman çizelgeleri hakkında daha fazla bilgi için bkz. Animasyona Genel Bakış .

Saat modu örneği için Bir Görsel Taslak Kullanarak MediaElement'i Kontrol Etme başlıklı bölüme bakın.

MediaElement Sınıfı

Uygulamaya medya eklemek, uygulamanın kullanıcı arabirimine (UI) denetim eklemek MediaElement ve eklemek istediğiniz medyaya bir Uri sağlamak kadar basittir. Microsoft Windows Media Player 10 tarafından desteklenen tüm medya türleri Windows Presentation Foundation'da (WPF) desteklenir. Aşağıdaki örnek, Extensible Application Markup Language (XAML) içinde MediaElement öğesinin basit bir kullanımını gösterir.

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

Bu örnekte medya yüklenir yüklenmez otomatik olarak oynatılır. Medyanın oynatılması tamamlandıktan sonra medya kapatılır ve tüm medya kaynakları (video belleği dahil) serbest bırakılır. Bu, MediaElement nesnesinin varsayılan davranışıdır ve LoadedBehavior ile UnloadedBehavior özellikleri tarafından denetlenir.

MediaElement Denetleme

LoadedBehavior ve UnloadedBehavior özellikleri, MediaElement sırasıyla IsLoaded veya true olduğunda, false'nin davranışını denetler. MediaState Özellikler, medya oynatma davranışını etkileyecek şekilde ayarlanır. Örneğin, varsayılan LoadedBehaviorPlay ve varsayılan UnloadedBehaviorClose şeklindedir. Bu, MediaElement yüklendikten ve ön oynatma tamamlandıktan hemen sonra medyanın oynatılmaya başladığı anlamına gelir. Oynatma tamamlandıktan sonra medya kapatılır ve tüm medya kaynakları serbest bırakılır.

LoadedBehavior ve UnloadedBehavior özellikleri, medya kayıttan yürütmeyi denetlemenin tek yolu değildir. Saat modunda, saat MediaElement kontrol edebilir ve etkileşimli kontrol yöntemleri LoadedBehavior olduğunda Manual kontrol sahibi olabilir. MediaElement aşağıdaki öncelikleri değerlendirerek bu rekabeti kontrol için ele alır.

  1. UnloadedBehavior. Medya kaldırıldığında yerinde. Bu, bir MediaClockMediaElement ile ilişkilendirilmiş olsa bile tüm medya kaynaklarının varsayılan olarak serbest bırakılmasını sağlar.

  2. MediaClock. Medyada bir Clockolduğunda yerinde. Medya kaldırılırsa, MediaClock olduğu sürece UnloadedBehavior etkinleşir Manual. Saat modu her zaman MediaElement öğesinin yüklenen davranışını geçersiz kılar.

  3. LoadedBehavior. Medya yüklendiğinde yerinde.

  4. Etkileşimli denetim yöntemleri. LoadedBehavior yerinde olduğunda Manual olduğunda. Kullanılabilir denetim yöntemleri : Play, Pause, Closeve Stop.

Bir MediaElement'i Görüntüleme

Bir MediaElement görüntülemek için, işlenecek içeriğe sahip olmalıdır ve içeriği yüklenene kadar ActualWidth ve ActualHeight özellikleri sıfır olarak ayarlanacaktır. Yalnızca ses içeriği için bu özellikler her zaman sıfırdır. Video içeriği için, bir kez MediaOpened olayı oluştuktan sonra, ActualWidth ve ActualHeight yüklenen medyanın boyutunu bildirecektir. Bu, medya yüklenene kadar MediaElement kullanıcı arabiriminde (UI) herhangi bir fiziksel alan kaplamayacağı anlamına gelir, ancak Width ve Height özellikleri ayarlanırsa kaplayabilir.

Hem Width hem de Height özelliklerinin ayarlanması, medyanın MediaElement için sağlanan alanı dolduracak şekilde esnetilmesine neden olur. Medyanın özgün en boy oranını korumak için, ya Width ya da Height özelliği ayarlanmalı, ancak her ikisi aynı anda ayarlanmamalıdır. Hem Width hem de Height özelliklerinin ayarlanması, medyanın istenmeyen sabit bir öğe boyutunda sunulmasına yol açabilir.

Windows Presentation Foundation (WPF), sabit boyutlu bir öğeden kaçınmak için medyayı önceden yükleyebilir. Bu, LoadedBehavior'ın Play veya Pause olarak ayarlanmasıyla yapılır. Bir Pause durumda, medya ön yükleme yapacak ve ilk kareyi gösterecektir. Play Bir durumda, medya ön yükleme yapacak ve oynatılmaya başlayacaktır.

MediaPlayer Sınıfı

MediaElement sınıfı bir çerçeve öğesi olduğundan, MediaPlayer sınıfı Drawing nesnelerinde kullanılacak şekilde tasarlanmıştır. Çizim nesneleri, performans avantajları elde etmek için çerçeve düzeyi özelliklerinden ödün verebilirsiniz veya özelliklere ihtiyacınız Freezable olduğunda kullanılır. MediaPlayer uygulamalarınızda medya içeriği sağlarken bu özelliklerden yararlanmanızı sağlar. gibi MediaElement, MediaPlayer bağımsız veya saat modunda kullanılabilir, ancak nesnenin MediaElement kaldırılmış ve yüklenmiş durumlarını içermez. Bu, kayıttan yürütme denetimi karmaşıklığını MediaPlayerazaltır.

MediaPlayer'i Denetleme

Stateless olduğu için, medya oynatımını kontrol etmenin yalnızca iki yolu vardır.

  1. Etkileşimli denetim yöntemleri. Bağımsız moddayken yerinde (nullClock özellik).

  2. MediaClock. Medyada bir Clockolduğunda yerinde.

Medya Oynatıcıyı Görüntüleme

Teknik olarak, MediaPlayer fiziksel bir temsile sahip olmadığından gösterilemez. Ancak, medyayı Drawing içinde sunmak için VideoDrawing sınıfı kullanılabilir. Aşağıdaki örnekte medya görüntülemek için bir VideoDrawing kullanımı gösterilmektedir.

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

Nesneler hakkında daha fazla bilgi için Bkz. Drawing.

Ayrıca bakınız