マルチメディアの概要Multimedia Overview

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) のマルチメディア機能を使用してアプリケーションにオーディオとビデオを統合することで、ユーザー エクスペリエンスを向上させることできます。The multimedia features in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) enable you to integrate audio and video into your applications to enhance the user experience. このトピックでは、WPFWPF のマルチメディア機能の概要を説明します。This topic introduces the multimedia features of WPFWPF.

メディア APIMedia API

MediaElementMediaPlayerクラスを使用するオーディオまたはビデオ コンテンツを表示します。The MediaElement and MediaPlayer classes are used to present audio or video content. これらのクラスは、対話式またはクロックで制御できます。These classes can be controlled interactively or by a clock. これらのクラスは、メディアを再生するために Microsoft Windows Media PlayerMicrosoft Windows Media Player 10 のコントロールで使用できます。These classes can use on the Microsoft Windows Media PlayerMicrosoft Windows Media Player 10 control for media playback. どちらのクラスを使用するかは、シナリオによって決まります。Which class you use, depends on the scenario.

MediaElement UIElementでサポートされている、レイアウトあり、多くのコントロールのコンテンツとして使用することができます。MediaElement is a UIElement that is supported by the Layout and can be consumed as the content of many controls. Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) でコードとして使用することもできます。It is also usable in Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) as well as code. MediaPlayer、その一方で、は用に設計されたDrawingオブジェクトおよびレイアウトをサポートしません。MediaPlayer, on the other hand, is designed for Drawing objects and lacks layout support. 使用して読み込まれたメディア、MediaPlayerでのみ表示できますを使用して、VideoDrawingまたはと直接やり取りすることによって、DrawingContextです。Media loaded using a MediaPlayer can only be presented using a VideoDrawing or by directly interacting with a DrawingContext. MediaPlayer XAML では使用できません。MediaPlayer cannot be used in XAML.

描画オブジェクトと描画コンテキストの詳細については、「描画オブジェクトの概要」を参照してください。For more information about drawing objects and drawing context, see Drawing Objects Overview.

注意

アプリケーションでメディアを配布するときに、プロジェクト リソースとしてメディア ファイルを使うことはできません。When distributing media with your application, you cannot use a media file as a project resource. プロジェクト ファイルで、メディアの種類を Content に設定し、CopyToOutputDirectoryPreserveNewest または Always に設定する必要があります。In your project file, you must instead set the media type to Content and set CopyToOutputDirectory to PreserveNewest or Always.

メディア再生モードMedia Playback Modes

注意

両方MediaElementMediaPlayerのようなメンバーが存在します。Both MediaElement and MediaPlayer have similar members. このセクションのリンクを参照してください、MediaElementクラス メンバーです。The links in this section refer to the MediaElement class members. メンバーがリンクされて、特に明記されていない限り、MediaElementクラスも含まれて、MediaPlayerクラスです。Unless specifically noted, members linked to in the MediaElement class can also be found in the MediaPlayer class.

Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) でのメディアの再生を理解するには、メディアを再生できる複数のモードを理解しておく必要があります。To understand media playback in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF), an understanding of the different modes in which media can be played is required. 両方MediaElementMediaPlayer、独立したモードとクロック モードの 2 つの別のメディア モードで使用できます。Both MediaElement and MediaPlayer can be used in two different media modes, independent mode and clock mode. メディアのモードはによって決定されます、Clockプロパティです。The media mode is determined by the Clock property. ときにClocknull、独立したモードでは、メディア オブジェクト。When Clock is null, the media object is in independent mode. ときに、Clockはクロック モードでは、null 以外の場合、メディア オブジェクト。When the Clock is non-null, the media object is in clock mode. 既定では、メディア オブジェクトは Independent モードになっています。By default, media objects are in independent mode.

Independent モードIndependent Mode

Independent モードでは、メディア コンテンツがメディアの再生を行います。In independent mode, the media content drives media playback. Independent モードには、次のオプションがあります。Independent mode enables the following options:

  • メディアのUri直接指定することができます。Media's Uri can be directly specified.

  • メディアの再生を直接制御できます。Media playback can be directly controlled.

  • メディアのPositionSpeedRatioプロパティを変更できます。Media's Position and SpeedRatio properties can be modified.

いずれかの設定によってメディアが読み込まれる、MediaElementオブジェクトのSourceプロパティまたは呼び出すことによって、MediaPlayerオブジェクトのOpenメソッドです。Media is loaded by either setting the MediaElement object's Source property or by calling the MediaPlayer object's Open method.

Independent モードでメディアの再生を制御するには、メディア オブジェクトの制御メソッドを使用できます。To control media playback in independent mode, the media object's control methods can be used. コントロールに使用できる方法はPlayPauseClose、およびStopです。The control methods available are Play, Pause, Close, and Stop. MediaElement、これらのメソッドを使用して対話型のコントロールは使用可能な場合に、LoadedBehaviorに設定されているManualです。For MediaElement, interactive control using these methods is only available when the LoadedBehavior is set to Manual. メディア オブジェクトが Clock モードの場合、これらのメソッドは使用できません。These methods are unavailable when the media object is in clock mode.

Independent モードの例については、「MediaElement (再生、一時停止、停止、ボリューム、および速度) を制御する」を参照してください。See Control a MediaElement (Play, Pause, Stop, Volume, and Speed) for an example of independent mode.

Clock モードClock Mode

クロック モードで、MediaTimelineドライブ メディアを再生します。In clock mode, a MediaTimeline drives media playback. Clock モードには次の特徴があります。Clock mode has the following characteristics:

  • メディアのUriがを通じて間接的に設定されて、MediaTimelineです。Media's Uri is indirectly set through a MediaTimeline.

  • メディアの再生は、クロックによって制御できます。Media playback can be controlled by the clock. メディア オブジェクトの制御メソッドは使用できません。The media object's control methods cannot be used.

  • 設定によってメディアが読み込まれる、MediaTimelineオブジェクトのSourceタイムラインから時計を作成し、メディア オブジェクトへのクロックの割り当てのプロパティです。Media is loaded by setting a MediaTimeline object's Source property, creating the clock from the timeline, and assigning the clock to the media object. メディアがこのように読み込まれるもときに、MediaTimeline内、Storyboardターゲット、MediaElementです。Media is also loaded this way when a MediaTimeline inside a Storyboard targets a MediaElement.

クロック モードでのメディア再生を制御する、ClockController制御メソッドを使用する必要があります。To control media playback in clock mode, the ClockController control methods must be used. AClockControllerから取得した、ClockControllerのプロパティ、MediaClockです。A ClockController is obtained from the ClockController property of the MediaClock. いずれかのコントロールのメソッドを使用しようとする場合、MediaElementまたはMediaPlayerクロック モードで、オブジェクト、InvalidOperationExceptionがスローされます。If you attempt to use the control methods of either a MediaElement or MediaPlayer object while in clock mode, an InvalidOperationException will be thrown.

クロックとタイムラインの詳細については、「アニメーションの概要」を参照してください。See the Animation Overview for more information about clocks and timelines.

Clock モードの例については、「ストーリーボードを使用して MediaElement を制御する」を参照してください。See Control a MediaElement by Using a Storyboard for an example of clock mode.

MediaElement クラスMediaElement Class

追加するだけでは、メディアをアプリケーションに追加する、MediaElementコントロールをユーザー インターフェイス (UI)user interface (UI)アプリケーションを提供して、Uriたいメディアにします。Adding media to an application is as simple as adding a MediaElement control to the ユーザー インターフェイス (UI)user interface (UI) of the application and providing a Uri to the media you wish to include. Microsoft Windows Media PlayerMicrosoft Windows Media Player 10 でサポートされているすべてのメディアが Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) でもサポートされます。All media types supported by Microsoft Windows Media PlayerMicrosoft Windows Media Player 10 are supported in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF). 次の例は、単純な使用量、MediaElementExtensible Application Markup Language (XAML)Extensible Application Markup Language (XAML)です。The following example shows a simple usage of the MediaElement in Extensible Application Markup Language (XAML)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>

このサンプルでは、メディアは、読み込まれるとすぐに自動的に再生されます。In this sample, media is played automatically as soon as it is loaded. メディアの再生が終了すると、メディアが閉じられ、すべてのメディア リソースが解放されます (ビデオ メモリを含みます)。Once the media has finished playing, the media is closed and all media resources are release (including video memory). これは、既定の動作、MediaElementオブジェクトし、によって制御されます、LoadedBehaviorUnloadedBehaviorプロパティです。This is the default behavior of the MediaElement object and is controlled by the LoadedBehavior and UnloadedBehavior properties.

MediaElement の制御Controlling a MediaElement

LoadedBehaviorUnloadedBehaviorプロパティの動作を制御する、MediaElementときIsLoadedtrueまたはfalse、それぞれします。The LoadedBehavior and UnloadedBehavior properties control the behavior of the MediaElement when IsLoaded is true or false, respectively. MediaStateメディア再生の動作に影響を与えるプロパティが設定されます。The MediaState the properties are set to affect the media playback behavior. たとえば、既定値LoadedBehaviorPlayと既定UnloadedBehaviorCloseします。For example, the default LoadedBehavior is Play and the default UnloadedBehavior is Close. つまり、このとすぐに、MediaElementが読み込まれて、プリロールが完了すると、メディアの再生が開始されるとします。This means that as soon as the MediaElement is loaded and the preroll is complete, the media begins to play. 再生が完了すると、メディアが閉じられ、すべてのメディア リソースが解放されます。Once playback is complete, media is closed and all media resources are released.

LoadedBehaviorUnloadedBehaviorプロパティがメディアの再生を制御する唯一の方法ではありません。The LoadedBehavior and UnloadedBehavior properties are not the only way to control media playback. クロック モードで、クロックを制御できます、MediaElement対話型コントロール メソッドが制御できると、LoadedBehaviorManualします。In clock mode, the clock can control the MediaElement and the interactive control methods have control when the LoadedBehavior is Manual. MediaElement 次の優先順位を評価することによって、このコントロールでの競合を処理します。MediaElement handles this competition for control by evaluating the following priorities.

  1. UnloadedBehaviorUnloadedBehavior. メディアがアンロードされているときに有効です。In place when media is unloaded. これにより、既定では、すべてのメディア リソースを解放する場合でも、MediaClockに関連付けられている、MediaElementです。This ensures that all media resources are released by default, even when a MediaClock is associated with the MediaElement.

  2. MediaClockMediaClock. メディアが含まれている場合、Clockです。In place when media has a Clock. メディアが読み込まれる場合、MediaClock限り有効になります、UnloadedBehaviorManualします。If media is unloaded, the MediaClock will take effect as long as the UnloadedBehavior is Manual. クロック モードでは、アンロード動作より常に優先、MediaElementです。Clock mode always overrides the loaded behavior of the MediaElement.

  3. LoadedBehaviorLoadedBehavior. メディアが読み込まれているときに有効です。In place when media is loaded.

  4. 対話型の制御メソッド。Interactive control methods. 配置時にLoadedBehaviorManualします。In place when LoadedBehavior is Manual. コントロールに使用できる方法はPlayPauseClose、およびStopです。The control methods available are Play, Pause, Close, and Stop.

MediaElement の表示Displaying a MediaElement

表示する、MediaElementコンテンツをレンダリングする必要があります、これがそのActualWidthActualHeightプロパティは、コンテンツが読み込まれるまでをゼロに設定します。To display a MediaElement it must have content to render and it will have its ActualWidth and ActualHeight properties set to zero until content is loaded. オーディオのみのコンテンツでは、これらのプロパティは常に 0 です。For audio only content, these properties are always zero. ビデオのコンテンツで 1 回、MediaOpenedイベントが発生した、ActualWidthActualHeight読み込まれたメディアのサイズをレポートには。For video content, once the MediaOpened event has been raised the ActualWidth and ActualHeight will report the size of the loaded media. つまり、メディアが読み込まれるまで、MediaElement内のすべての物理領域を消費しません、ユーザー インターフェイス (UI)user interface (UI)しない限り、WidthまたはHeightプロパティが設定されます。This means that until media is loaded, the MediaElement will not take up any physical space in the ユーザー インターフェイス (UI)user interface (UI) unless the Width or Height properties are set.

両方を設定、WidthHeightプロパティと、メディアに指定された領域に合わせて拡大をMediaElementです。Setting both the Width and Height properties will cause the media to stretch to fill the area provided for the MediaElement. か、メディアの元の縦横比を保持するために、WidthまたはHeightプロパティは、セットが、両方を指定してください。To preserve the media's original aspect ratio, either the Width or Height property should be set but not both. 両方を設定、WidthHeightプロパティが望ましいことができない可能性がある要素の固定サイズで表示するメディアになります。Setting both the Width and Height properties will cause the media to present in a fixed element size that may not be desirable.

要素のサイズが固定されることを避けるために、Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) では、メディアをプリロールすることができます。To avoid having a fixed size element which, Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) can preroll the media. これは、設定で、LoadedBehaviorいずれかにPlayまたはPauseです。This is done by setting the LoadedBehavior to either Play or Pause. Pause状態にある場合、メディアはプリロールされし、最初のフレームが表示されます。In a Pause state, the media will preroll and will present the first frame. Play状態にある場合、メディアはプリロールされ、再生が開始します。In a Play state, the media will preroll and begin to play.

MediaPlayer クラスMediaPlayer Class

該当します。、MediaElementクラスは、フレームワーク要素、MediaPlayerクラスで使用するものではDrawingオブジェクト。Where as the MediaElement class is a framework element, the MediaPlayer class is designed to be used in Drawing objects. パフォーマンス上の利点を取得するためにフレームワーク レベルの機能を犠牲にする必要がある場合または描画オブジェクトで使用Freezable機能します。Drawing objects are used when you can sacrifice framework level features to gain performance benefits or when you need Freezable features. MediaPlayer アプリケーションでメディア コンテンツを提供するときにこれらの機能を利用できます。MediaPlayer enables you to take advantage of these features while providing media content in your applications. 同様にMediaElementMediaPlayer独立で使用できるまたは時刻のモードはありませんが、MediaElementオブジェクトのアンロードし、読み込み状態。Like MediaElement, MediaPlayer can be used in independent or clock mode but does not have the MediaElement object's unloaded and loaded states. これは再生コントロールの複雑さを軽減、MediaPlayerです。This reduces the playback control complexity of the MediaPlayer.

Media Player の制御Controlling MediaPlayer

MediaPlayerはステートレスであるメディア再生を制御する方法は 2 つです。Because MediaPlayer is stateless, there are only two ways to control media playback.

  1. 対話型の制御メソッド。Interactive control methods. 独立したモードのときにインプレース (null Clockプロパティ)。In place when in independent mode (nullClock property).

  2. MediaClockMediaClock. メディアが含まれている場合、Clockです。In place when media has a Clock.

MediaPlayer の表示Displaying a MediaPlayer

技術的には、MediaPlayer物理的に表したものがあるないので、表示されることはできません。Technically, a MediaPlayer cannot be displayed since it has no physical representation. ただしでメディアを表示する使用する、Drawingを使用して、VideoDrawingクラスです。However, it can be used to present media in a Drawing using the VideoDrawing class. 次の例での使用、VideoDrawingメディアを表示します。The following example demonstrates the use of a VideoDrawing to display media.

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

参照してください、描画オブジェクトの概要の詳細についてはDrawingオブジェクト。See the Drawing Objects Overview for more information about Drawing objects.

関連項目See Also

DrawingGroup
レイアウトLayout
方法トピックHow-to Topics