Общие сведения о мультимедиа
Мультимедийные возможности Windows Presentation Foundation (WPF) позволяют интегрировать аудио и видео в приложения для расширения возможностей пользователя. В этом разделе представлены мультимедийные возможности WPF.
API мультимедиа
MediaElement И MediaPlayer классы используются для представления аудио и видео содержимого. Этими классами можно управлять в интерактивном режиме или с помощью часов. Эти классы можно использовать в элементе управления 10 в Проигрыватель Windows Media (Microsoft) для воспроизведения мультимедиа. Выбор класса зависит от сценария.
MediaElement — UIElement , поддерживаемый макета и могут быть использованы в качестве содержимого многими элементами управления. Его можно также использовать в XAML наряду с программным кодом. MediaPlayer, с другой стороны, предназначен для Drawing объектов и не поддерживается разметкой. Носитель, загруженный с помощью MediaPlayer может быть представлено только с помощью VideoDrawing или путем непосредственного взаимодействия с DrawingContext. MediaPlayer не может использоваться в XAML.
Дополнительные сведения о графических объектах и контексте рисования см. в разделе Обзор объектов Drawing.
Note
При распространении мультимедиа вместе с приложением файл мультимедиа нельзя использовать как ресурс проекта. Вместо этого в файле проекта необходимо выбрать тип мультимедиа Content
и задать для CopyToOutputDirectory
значение PreserveNewest
или Always
.
Режимы воспроизведения мультимедиа
Note
Оба MediaElement и MediaPlayer содержат похожие члены. Ссылки в этом разделе, относятся к MediaElement членов класса. Если не указано иное, члены, связанные в MediaElement класс можно найти также в MediaPlayer класса.
Чтобы понимать принципы воспроизведения мультимедиа в Windows Presentation Foundation (WPF), необходимо знание о различных режимах, в которых может воспроизводиться содержимое мультимедиа. Оба MediaElement и MediaPlayer можно использовать в двух различных режимах, независимом режиме и режиме часов. Режим мультимедиа определяется Clock свойство. Когда Clock является null
, объект мультимедиа находится в независимом режиме. Когда Clock — не null, объект мультимедиа находится в режиме часов. По умолчанию объекты мультимедиа находятся в независимом режиме.
Независимый режим
В независимом режиме содержимое мультимедиа управляет своим воспроизведением. Независимый режим имеет следующие параметры.
Параметр мультимедиа Uri можно указывать непосредственно.
Воспроизведением мультимедиа можно управлять напрямую.
Параметр мультимедиа Position и SpeedRatio свойства можно изменить.
Содержимое мультимедиа загружается, либо присвоив MediaElement объекта Source свойства или путем вызова MediaPlayer объекта Open метод.
Для управления воспроизведением мультимедиа в независимом режиме можно использовать управляющие методы объекта мультимедиа. Методы управления, доступные Play, Pause, Close, и Stop. Для MediaElement, с помощью этих методов для интерактивного управления доступен только тогда, когда LoadedBehavior присваивается Manual. Эти методы недоступны, если объект мультимедиа находится в режиме часов.
Пример использования независимого режима см. в разделе Управление элементом MediaElement (воспроизведение, пауза, стоп, громкость и скорость).
Режим часов
В режиме часов MediaTimeline управляет воспроизведением мультимедиа. Режим часов имеет следующие характеристики.
Параметр мультимедиа Uri задано косвенно через MediaTimeline.
Воспроизведением мультимедиа можно управлять с помощью часов. Нельзя использовать управляющие методы объекта мультимедиа.
Содержимое мультимедиа загружается, задав MediaTimeline объекта Source свойством, создания часов по временной шкале и назначением часов объекту мультимедиа. Содержимое мультимедиа загружается таким образом при MediaTimeline внутри Storyboard целевых объектов MediaElement.
Для управления воспроизведением мультимедиа в режиме часов ClockController необходимо использовать управляющие методы. Объект ClockController получается из ClockController свойство MediaClock. Если вы попытаетесь использовать управляющие методы элемента MediaElement или MediaPlayer объекта в режиме часов InvalidOperationException будет создано.
Дополнительные сведения о часах и временных шкалах см. в разделе Общие сведения об эффектах анимации.
Пример использования режима часов см. в разделе Управление элементом MediaElement с помощью раскадровки.
Класс MediaElement
Добавление мультимедиа в приложение является простым добавлением MediaElement управления UI приложения и предоставляя Uri на носитель, которые требуется включить. Все типы мультимедиа, поддерживаемые Проигрыватель Windows Media (Microsoft) 10, также поддерживаются в Windows Presentation Foundation (WPF). В следующем примере показано простое использование класса MediaElement в 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>
В этом примере содержимое мультимедиа воспроизводится автоматически по мере его загрузки. После завершения воспроизведения содержимое мультимедиа закрывается, а все ресурсы мультимедиа освобождаются (включая видеопамять). Это поведение по умолчанию MediaElement объекта и определяется LoadedBehavior и UnloadedBehavior свойства.
Управление объектом MediaElement
LoadedBehavior И UnloadedBehavior свойства управляют поведением MediaElement при IsLoaded — true
или false
, соответственно. MediaState Свойствам присваивается влияют на поведение воспроизведения мультимедиа. Например, значение по умолчанию LoadedBehavior — Play и значение по умолчанию UnloadedBehavior является Close. Это означает, что как только MediaElement загружается и выполняется предварительная проба, начинается воспроизведение мультимедиа. После завершения воспроизведения содержимое мультимедиа закрывается и освобождаются все ресурсы мультимедиа.
LoadedBehavior И UnloadedBehavior свойства не единственный способ управления воспроизведением мультимедиа. В режиме часов, могут управлять часы MediaElement и интерактивные управляющие методы получают управление, если LoadedBehavior является Manual. MediaElement обрабатывает конкуренцию за управление, вычисляя следующие приоритеты.
UnloadedBehavior. В случае, когда содержимое мультимедиа выгружается. Это гарантирует, что все ресурсы мультимедиа освобождаются по умолчанию, даже если MediaClock связан с MediaElement.
MediaClock. В случае, когда содержимое мультимедиа имеет Clock. Если содержимое мультимедиа выгружается, MediaClock вступят в силу, пока UnloadedBehavior является Manual. Режим часов всегда переопределяет загруженное правило поведения объекта MediaElement.
LoadedBehavior. В случае, когда содержимое мультимедиа загружается.
Интерактивные управляющие методы. В случае, если LoadedBehavior является Manual. Методы управления, доступные Play, Pause, Close, и Stop.
Отображение объекта MediaElement
Для отображения MediaElement он должен иметь содержимое, преобразовываемое и будет иметь его ActualWidth и ActualHeight свойства установлено в ноль до загрузки содержимого. Для содержимого, в составе которого есть только звук, эти свойства всегда имеют нулевое значение. Для видео после MediaOpened события ActualWidth и ActualHeight сообщат размер загружаемого носителя. Это означает, что пока содержимое мультимедиа загружается, MediaElement не занимает физического пространства в UI Если Width или Height свойств.
Установка Width и Height свойства приведут к с носителя растягиваются для заполнения области, предоставленной для MediaElement. Для сохранения файла мультимедиа исходные пропорции, либо Width или Height свойство должно иметь значение, но не оба. Установка Width и Height свойства приведут к отображению в элементе фиксированного размера, который может быть нежелательно содержимого мультимедиа.
Чтобы избежать отображения элемента фиксированного размера, Windows Presentation Foundation (WPF) может сделать предварительную пробу содержимого мультимедиа. Это сделать, задав LoadedBehavior либо Play или Pause. В Pause state, мультимедиа будет сделана предварительная проба и будет показан первый кадр. В Play state, будет сделана предварительная проба и начнет воспроизведение мультимедиа.
Класс MediaPlayer
Тогда как MediaElement класс — это элемент платформы MediaPlayer класс предназначен для использования в Drawing объектов. Графические объекты используются в том случае, когда можно пожертвовать возможностями уровня среды ради улучшения производительности или при необходимости Freezable функции. MediaPlayer позволяет воспользоваться преимуществами этих функций, предоставляя мультимедийного содержимого в приложениях. Как и MediaElement, MediaPlayer можно использовать в независимом или режиме часов, но может не иметь MediaElement выгрузки и загрузки состояния объекта. Это уменьшает сложность управления воспроизведением MediaPlayer.
Управление объектом MediaPlayer
Так как MediaPlayer — без отслеживания состояния, существуют только два способа управления воспроизведением мультимедиа.
Интерактивные управляющие методы. В случае независимого режима (
null
Clock свойство).MediaClock. В случае, когда содержимое мультимедиа имеет Clock.
Отображение объекта MediaPlayer
С технической точки зрения MediaPlayer невозможно, так как он не имеет физического представления. Тем не менее, его можно использовать для отображения содержимого мультимедиа в Drawing с помощью VideoDrawing класса. В следующем примере показано использование 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();
См. в разделе Обзор объектов Drawing Дополнительные сведения о Drawing объектов.