Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las características multimedia de Windows Presentation Foundation (WPF) te permiten integrar audio y vídeo en tus aplicaciones para mejorar la experiencia del usuario. En este tema se presentan las características multimedia de WPF.
API de Medios
Las MediaElement clases y MediaPlayer se usan para presentar contenido de audio o vídeo. Estas clases se pueden controlar interactivamente o por un reloj. Estas clases pueden usarse en el control Microsoft Windows Media Player 10 para la reproducción multimedia. La clase que use depende del escenario.
MediaElement es un UIElement que está soportado por el diseño y puede utilizarse como contenido en varios controles. También se puede usar en lenguaje de marcado extensible de aplicaciones (XAML), así como en el código. MediaPlayer, por otro lado, está diseñado para Drawing objetos y carece de compatibilidad con el diseño. Los medios cargados mediante un MediaPlayer solo se pueden presentar mediante un VideoDrawing o mediante la interacción directa con un DrawingContext. MediaPlayer no se puede usar en XAML.
Para obtener más información sobre los objetos de dibujo y el contexto de dibujo, vea Información general sobre objetos de dibujo.
Nota:
Al distribuir medios con la aplicación, no puede usar un archivo multimedia como recurso de proyecto. En el archivo del proyecto, debe establecer el tipo de medio en Content y establecer CopyToOutputDirectory en PreserveNewest o Always.
Modos de reproducción multimedia
Nota:
Tanto MediaElement como MediaPlayer tienen miembros similares. Los vínculos de esta sección hacen referencia a los miembros de clase MediaElement . A menos que se indique específicamente, los miembros vinculados en la MediaElement clase también se pueden encontrar en la MediaPlayer clase.
Para comprender la reproducción multimedia en Windows Presentation Foundation (WPF), se requiere una comprensión de los diferentes modos en los que se puede reproducir contenido multimedia. Tanto MediaElement como MediaPlayer se pueden usar en dos modos multimedia diferentes: modo independiente y modo de reloj. El modo multimedia viene determinado por la Clock propiedad . Cuando Clock es null, el objeto multimedia está en modo independiente. Cuando Clock es distinto de nulo, el objeto multimedia está en modo reloj. De forma predeterminada, los objetos multimedia están en modo independiente.
Modo independiente
En modo independiente, el contenido multimedia controla la reproducción multimedia. El modo independiente habilita las siguientes opciones:
El Uri de los medios se puede especificar directamente.
La reproducción multimedia se puede controlar directamente.
Propiedades de Position y SpeedRatio pueden ser modificadas.
Los medios se cargan estableciendo la MediaElement propiedad del Source objeto o llamando al MediaPlayer método del Open objeto.
Para controlar la reproducción multimedia en modo independiente, se pueden usar los métodos de control del objeto multimedia. Los métodos de control disponibles son Play, Pause, Closey Stop. Para MediaElement, el control interactivo que usa estos métodos solo está disponible cuando LoadedBehavior se establece en Manual. Estos métodos no están disponibles cuando el objeto multimedia está en modo de reloj.
Consulta Controlar un mediaElement (Reproducir, Pausar, Detener, Volumen y Velocidad) para obtener un ejemplo de modo independiente.
Modo de reloj
En el modo de reloj, MediaTimeline controla la reproducción multimedia. El modo de reloj tiene las siguientes características:
Los medios Uri se configuran indirectamente a través de un MediaTimeline.
La reproducción multimedia se puede controlar mediante el reloj. No se pueden usar los métodos de control del objeto multimedia.
Los medios se cargan estableciendo la propiedad del objeto MediaTimeline, creando el reloj a partir de la línea de tiempo y asignando el reloj al objeto multimedia. Los medios también se cargan de esta manera cuando un MediaTimeline dentro de un Storyboard apunta a un MediaElement.
Para controlar la reproducción multimedia en modo de reloj, se deben usar los métodos de ClockController control. ClockController se obtiene de la propiedad ClockController del MediaClock. Si intenta usar los métodos de control de un MediaElement o MediaPlayer objeto mientras está en modo de reloj, se producirá una InvalidOperationException .
Consulte la Descripción general de animaciones para obtener más información sobre los relojes y las líneas de tiempo.
Vea Controlar un mediaElement mediante un guión gráfico para obtener un ejemplo del modo de reloj.
Clase MediaElement
Agregar medios a una aplicación es tan sencillo como agregar un MediaElement control a la interfaz de usuario (UI) de la aplicación y proporcionar un Uri elemento al medio que desea incluir. Todos los tipos de medios compatibles con microsoft Windows Media Player 10 se admiten en Windows Presentation Foundation (WPF). El siguiente ejemplo muestra un uso sencillo del MediaElement en lenguaje de marcado de aplicaciones extensible (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>
En este ejemplo, los medios se reproducen automáticamente en cuanto se cargan. Una vez que el medio haya terminado de reproducirse, el medio se cierra y todos los recursos multimedia se liberan (incluida la memoria de vídeo). Este es el comportamiento predeterminado del MediaElement objeto y se controla mediante las LoadedBehavior propiedades y UnloadedBehavior .
Controlar un objeto MediaElement
Las LoadedBehavior propiedades y UnloadedBehavior controlan el comportamiento de MediaElement cuando IsLoaded es true o false, respectivamente. Las MediaState propiedades se establecen para afectar al comportamiento de reproducción multimedia. Por ejemplo, el valor predeterminado LoadedBehavior es Play y el valor predeterminado UnloadedBehavior es Close. Esto significa que tan pronto como MediaElement se ha cargado y el prerollo se ha completado, el medio comienza a reproducirse. Una vez completada la reproducción, los medios se cierran y se liberan todos los recursos multimedia.
Las LoadedBehavior propiedades y UnloadedBehavior no son la única manera de controlar la reproducción multimedia. En el modo de reloj, el reloj puede controlar el MediaElement, y los métodos de control interactivos tienen control cuando LoadedBehavior es Manual. MediaElement controla esta competencia para el control mediante la evaluación de las siguientes prioridades.
UnloadedBehavior. En su lugar, cuando se descarga el medio. Esto garantiza que todos los recursos multimedia se liberen de forma predeterminada, incluso cuando MediaClock está asociado con MediaElement.
MediaClock. En su lugar cuando el medio tiene una Clock. Si los medios se descargan, MediaClock surtirá efecto siempre que UnloadedBehavior sea Manual. El modo de reloj siempre anula el comportamiento cargado de MediaElement.
LoadedBehavior. En su lugar cuando se carga el medio.
Métodos de control interactivos. En su lugar, cuando LoadedBehavior es Manual. Los métodos de control disponibles son Play, Pause, Closey Stop.
Mostrar un objeto MediaElement
Para mostrar un MediaElement elemento debe tener contenido para representarse y tendrá sus ActualWidth propiedades y ActualHeight establecidas en cero hasta que se cargue el contenido. Para el contenido de solo audio, estas propiedades siempre son cero. En el caso del contenido de vídeo, una vez que se ha generado el evento MediaOpened, ActualWidth y ActualHeight notificarán el tamaño del medio cargado. Esto significa que hasta que se cargue el medio, el MediaElement no ocupará ningún espacio físico en la interfaz de usuario (UI) a menos que se establezcan las Width propiedades o Height .
Establecer tanto las propiedades Width como Height hará que el medio se extienda para llenar el área proporcionada para el MediaElement. Para conservar la relación de aspecto original del medio, se debe establecer la propiedad Width o la propiedad Height, pero no ambas. Establecer las propiedades Width y Height hará que el contenido se presente en un tamaño fijo de un elemento que puede no ser deseable.
Para evitar tener un elemento de tamaño fijo, Windows Presentation Foundation (WPF) puede preprocesar los medios. Esto se hace configurando LoadedBehavior en Play o Pause. En un Pause estado, el contenido multimedia realizará un prerroll y presentará el primer fotograma. En un Play estado, el contenido pre-rotará y empezará a reproducirse.
Clase MediaPlayer
Cuando la MediaElement clase es un elemento de marco, la MediaPlayer clase está diseñada para usarse en Drawing objetos . Los objetos de dibujo se usan cuando necesitas sacrificar las características del marco de trabajo para obtener ventajas de rendimiento, o cuando necesitas Freezable características. MediaPlayer le permite aprovechar estas características al proporcionar contenido multimedia en las aplicaciones. Al igual que MediaElement, MediaPlayer se puede usar en modo independiente o en modo de reloj, pero no tiene los estados de descargado y cargado del objeto MediaElement. Esto reduce la complejidad del control de reproducción de MediaPlayer.
Controlar MediaPlayer
Dado que MediaPlayer no tiene estado, solo hay dos maneras de controlar la reproducción multimedia.
Métodos de control interactivos. Disponible cuando está en modo independiente (
nullClock propiedad).MediaClock. En su lugar cuando el medio tiene una Clock.
Mostrar MediaPlayer
Técnicamente, no se puede mostrar un MediaPlayer elemento porque no tiene ninguna representación física. Sin embargo, se puede usar para presentar medios en un Drawing mediante la clase VideoDrawing. En el ejemplo siguiente se muestra el uso de un VideoDrawing para mostrar elementos multimedia.
//
// 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();
Consulte la información general sobre los objetos de dibujo para obtener más información sobre los Drawing.
Consulte también
.NET Desktop feedback