Multimedyaya Genel Bakış
Windows Presentation Foundation (WPF) içindeki multimedya özellikleri, kullanıcı deneyimini geliştirmek için uygulamalarınıza ses ve video tümleştirmenizi sağlar. Bu konuda WPF 'in multimedya özellikleri tanıtılmaktadır.
Medya API 'SI
MediaElementVe MediaPlayer sınıfları, ses veya video içeriğini sunmak için kullanılır. Bu sınıflar etkileşimli bir şekilde veya bir saatle denetlenebilir. bu sınıflar, medya kayıttan yürütme için Microsoft Windows Media Player 10 denetiminde kullanılabilir. Kullandığınız sınıf, senaryoya bağlıdır.
MediaElementUIElementMediaElement tarafından desteklenir ve birçok denetimin içeriği olarak tüketilebilir. Ayrıca, Extensible Application Markup Language (XAML) ve kod içinde de kullanılabilir. MediaPlayer, diğer yandan nesneler için tasarlanmıştır Drawing ve düzen desteği yoktur. Kullanılarak yüklenen medya MediaPlayer yalnızca VideoDrawing veya kullanılarak veya doğrudan ile etkileşimde bulunarak sunulabilir DrawingContext . MediaPlayer XAML 'de kullanılamaz.
Çizim nesneleri ve çizim bağlamı hakkında daha fazla bilgi için bkz. çizim nesnelerine genel bakış.
Not
Medyayı uygulamanızla dağıtırken proje kaynağı olarak bir medya dosyası kullanamazsınız. Proje dosyanızda, bunun yerine medya türünü olarak ayarlamanız Content ve ya da olarak ayarlamanız gerekir CopyToOutputDirectoryPreserveNewestAlways .
Medya kayıttan yürütme modları
Not
Her ikisi de MediaElementMediaPlayer benzer üyelere sahiptir. Bu bölümdeki bağlantılar MediaElement sınıf üyelerine başvurur. Özellikle belirtilmedikçe, sınıfta bağlantılı Üyeler MediaElement de MediaPlayer sınıfında bulunabilir.
Windows Presentation Foundation (WPF) ' de medya kayıttan yürütmeyi anlamak için, medyanın yürütülenbileceği farklı modların anlaşılması gerekir. Her ikisi de MediaElementMediaPlayer iki farklı medya modunda, bağımsız modda ve saat modunda kullanılabilir. Medya modu, özelliği tarafından belirlenir Clock . Ne zaman olduğunda Clocknull , medya nesnesi bağımsız moddadır. Null olmadığında Clock , medya nesnesi saat modundadır. Varsayılan olarak, medya nesneleri bağımsız modundadır.
Bağımsız mod
Bağımsız modda, medya içeriği medya kayıttan yürütmeyi yürütür. Bağımsız mod aşağıdaki seçenekleri sunar:
Medya Uri , doğrudan belirtilebilir.
Medya kayıttan yürütme doğrudan denetlenebilir.
Medya Position ve SpeedRatio Özellikler değiştirilebilir.
Medya, MediaElement nesnenin Source özelliği ayarlanarak ya da MediaPlayer nesnenin yöntemi çağırarak yüklenir Open .
Medya kayıttan yürütmeyi bağımsız modda denetlemek için, medya nesnesinin denetim yöntemleri kullanılabilir. Kullanılabilir denetim yöntemleri,, Play ve ' dir PauseCloseStop . İçin MediaElement , bu yöntemleri kullanan etkileşimli denetim yalnızca, LoadedBehavior olarak ayarlandığında kullanılabilir Manual . Medya nesnesi saat modundayken bu yöntemler kullanılamaz.
Bağımsız mod örneği için bkz. MediaElement (Play, Duraklat, durdur, hacim ve Speed) .
Saat modu
Saat modunda, bir MediaTimeline sürücü medyası kayıttan yürütme. Saat modu aşağıdaki özelliklere sahiptir:
Medya Uri , dolaylı olarak bir ile ayarlanır MediaTimeline .
Medya kayıttan yürütme, saat tarafından denetlenebilir. Medya nesnesinin denetim yöntemleri kullanılamıyor.
Medya, bir MediaTimeline nesnenin Source özelliği ayarlanarak, zaman çizelgesinden saati oluşturarak ve saati medya nesnesine atanarak yüklenir. Medya, bir ' a hedeflediğinde de bu şekilde yüklenir MediaTimelineStoryboardMediaElement .
Medya kayıttan yürütmeyi saat modunda denetlemek için ClockController Denetim yöntemlerinin kullanılması gerekir. ClockControllerClockController , Öğesinin özelliğinden elde edilir MediaClock . Saat modundayken bir veya nesnesinin denetim yöntemlerini kullanmaya çalışırsanız MediaElementMediaPlayer , bir oluşturulur InvalidOperationException .
Saatler ve zaman çizelgeleri hakkında daha fazla bilgi için animasyona genel bakış bölümüne bakın.
Bkz. saat modu örneği için görsel taslak kullanarak MediaElement 'ı denetleme .
MediaElement sınıfı
Bir uygulamaya medya eklemek, MediaElement uygulamanın kullanıcı arabirimine (UI) bir denetim eklemek ve Uri dahil etmek istediğiniz medyaya sağlamak kadar basittir. Microsoft Windows Media Player 10 tarafından desteklenen tüm medya türleri Windows Presentation Foundation (WPF) ' de desteklenir. Aşağıdaki örnek, MediaElement Extensible Application Markup Language (XAML) içinde 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üklendikten hemen sonra otomatik olarak oynatılır. Medyanın yürütülmesi bittikten sonra medya kapatılır ve tüm medya kaynakları yayın (video belleği dahil) olur. Bu, nesnesinin varsayılan davranışıdır MediaElement ve LoadedBehavior ve özellikleri tarafından denetlenir UnloadedBehavior .
MediaElement 'i denetleme
LoadedBehaviorVe UnloadedBehavior Özellikleri, MediaElementIsLoadedtruefalse sırasıyla veya, sırasıyla davranışını denetler. MediaStateÖzellikler, medya kayıttan yürütme davranışını etkileyecek şekilde ayarlanır. Örneğin, varsayılan, LoadedBehaviorPlay ve varsayılandır UnloadedBehaviorClose . Yani, MediaElement yüklendiği anda ve PreRoll tamamlandıktan hemen sonra medya oynatılmaya başlar. Kayıttan yürütme tamamlandıktan sonra medya kapatılır ve tüm medya kaynakları serbest bırakılır.
LoadedBehaviorVe UnloadedBehavior Özellikleri, medya kayıttan yürütmeyi denetlemek için tek yol değildir. Saat modunda, saat ' i denetleyebilir MediaElement ve etkileşimli denetim yöntemlerinin olduğunda denetimi vardır LoadedBehaviorManual . MediaElement aşağıdaki öncelikleri değerlendirerek denetim için bu yarışma işler.
UnloadedBehavior. Medya kaldırıldığında yerinde. Bu, ile ilişkili olduğunda bile tüm medya kaynaklarının varsayılan olarak serbest bırakılacağını sağlar MediaClockMediaElement .
MediaClock. Medyada olduğu zaman yerinde Clock . Medya kaldırıldığında, MediaClock olduğu sürece geçerli olur UnloadedBehaviorManual . Saat modu, uygulamasının yüklenen davranışını her zaman geçersiz kılar MediaElement .
LoadedBehavior. Medya yüklendiğinde yerinde.
Etkileşimli denetim yöntemleri. Ne zaman yerinde LoadedBehaviorManual . Kullanılabilir denetim yöntemleri,, Play ve ' dir PauseCloseStop .
MediaElement 'i görüntüleme
Göstermek için MediaElement , bir içeriğin işlenmesi gerekir ve ActualWidthActualHeight içerik yükleninceye kadar, ve özellikleri sıfır olarak ayarlanır. Yalnızca ses içeriği için bu özellikler her zaman sıfırdır. Video içeriği için, olay uygulandıktan sonra MediaOpenedActualWidthActualHeight yüklenen medyanın boyutunu rapor eder. Bu, medya yüklenene kadar, MediaElementWidth veya özellikleri ayarlanmamışsa Kullanıcı ARABIRIMINDE (UI) herhangi bir fiziksel alanı kaplamayacak anlamına gelir Height .
Hem hem de WidthHeight özelliklerinin ayarlanması, medyanın, için belirtilen alanı dolduracak şekilde uzamasına neden olur MediaElement . Medyanın özgün en boy oranını korumak için Width ya da Height özelliği ayarlanmalıdır, ancak her ikisi birden belirtilmemelidir. Hem hem de Width özelliklerinin ayarlanması, Height medyanın istenmeyen sabit bir öğe boyutunda olmasına neden olur.
Windows Presentation Foundation (WPF), bir sabit boyut öğesi kullanmaktan kaçınmak için, medyayı önceden yükleyebilir. Bu, ya da ' a ayarlanarak yapılır LoadedBehaviorPlayPause . Bir durumda, medya ön, ön ek Pause olur ve ilk kareyi sunacaktır. Bir Play durumda, medya ön ek olur ve yürütmeye başlar.
MediaPlayer Sınıfı
MediaElementSınıfın çerçeve öğesi olduğu yerlerde, MediaPlayer sınıfı nesnelerinde kullanılmak üzere tasarlanmıştır Drawing . Çizim nesneleri, performans avantajları elde etmek veya özelliklerden yararlanmak için çerçeve düzeyi özelliklerinin Fede olması durumunda kullanılır Freezable . MediaPlayer , uygulamalarınızda medya içeriği sağlarken bu özelliklerden yararlanmanızı sağlar. Benzer şekilde MediaElement , MediaPlayer bağımsız veya saat modunda kullanılabilir ancak MediaElement nesnenin yüklenmemiş ve yüklü durumları yoktur. Bu, öğesinin kayıttan yürütme denetim karmaşıklığını azaltır MediaPlayer .
MediaPlayer 'yi denetleme
MediaPlayerDurum bilgisiz olduğundan, medya kayıttan yürütmeyi denetlemek için yalnızca iki yol vardır.
Etkileşimli denetim yöntemleri. Bağımsız modda (
nullClock özellik) yerinde.MediaClock. Medyada olduğu zaman yerinde Clock .
MediaPlayer görüntüleme
Teknik olarak, bir MediaPlayer fiziksel temsili olmadığından görüntülenemez. Ancak, sınıfını kullanarak bir ortamında medya sunmak için kullanılabilir DrawingVideoDrawing . Aşağıdaki örnek, uygulamasının görüntüleme medyası kullanımını gösterir VideoDrawing .
//
// 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. çizim nesnelerine genel bakış .