Работа с мультимедиа

Аудио

Последнее обновление: 16.04.2017

Universal Windows Platform имеет широкие возможности для работы с аудио, со звуками, с их обработкой. Для воспроизведения аудиофайлов мы можем использовать в рамках UWP такой элемент как MediaElement.

MediaElement представляет простейший элемент для воспроизведения аудио. С помощью свойства Source или метода SetSource() (программным способом) можно установить источник аудио.

К примеру, создадим в проекте новую папку для хранения аудиофайлов, которую назовем Audio, и добавим в нее какой-нибудь аудиофайл:

Работа со звуком в UWP

В данном случае аудиофайл называется "beethoven_fur_elise.mp3". Тогда, чтобы его воспроизвести, я могу использовать следующую разметку:

<MediaElement x:Name="media" Source="ms-appx:///audio/beethoven_fur_elise.mp3" AutoPlay="True" />

Для проигрывания файлов из проекта применяется Uri в формате "ms-appx:///путь к файлу", либо просто путь без префикса, например, "audio/beethoven_fur_elise.mp3". Также, мы можем в качестве источника указывать интернет-ресурсы.

Установка источника программным способом:

using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.ApplicationModel;

namespace MediaApp
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
            this.Loaded += MainPage_Loaded;
        }

        private async void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            var file = await Package.Current.InstalledLocation.GetFileAsync("audio\\beethoven_fur_elise.mp3");
            var stream = await file.OpenReadAsync();
            media.SetSource(stream, "");
            media.Play();
        }
    }
}

Элемент MediaElement имеет множество свойств, которые позволяют настраивать и управлять воспроизведением, но среди них прежде всего можно выделить следующие:

  • AutoPlay: при значении true аудио начнет автоматически проигрываться после загрузки страницы

  • IsMuted: при значении true уменьшает громкость о нуля

  • IsLooping: при значении true композиция повторяется после завершения

  • Volume: уровень громкости в виде значения double

  • AreTransportControlsEnabled: при значении true отображаются элементы управления воспроизведением

Так, чтобы добавить стандартные элементы управления воспроизведения, достаточно использовать свойство AreTransportControlsEnabled:

<MediaElement x:Name="media" Source="audio\\beethoven_fur_elise.mp3" AreTransportControlsEnabled="True" />

Тогда элемент будет выглядеть следующим образом:

Управление MediaElement в UWP

Однако, если встроенные элементы нас не устраивают, тогда мы можем сами создать свои компоненты управления, используя методы класса MediaElement:

  • Play(): запускает воспроизведение

  • Pause(): приостанавливание воспроизведение

  • Stop(): полностью останавливает проигрывание

При работе с MediaElement мы также можем применять его события для отслеживания состояния элемента. Некоторые из событий:

  • MediaOpened: срабатывает при начале воспроизведения

  • MediaFailed: генерируется при ошибке открытия файла

  • MediaEnded: срабатывает при завершении воспроизведения

Используем обычные кнопки для управления воспроизведения аудио:

<Page
    x:Class="MediaApp.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:MediaApp"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <StackPanel>
            <TextBlock x:Name="headerBlock" HorizontalAlignment="Center" />
            <MediaElement x:Name="media" AutoPlay="False" Source="audio/beethoven_fur_elise.mp3" 
                  MediaFailed="Media_MediaFailed" 
				  MediaOpened="Media_MediaOpened"
                  MediaEnded="Media_MediaEnded" />

            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                <Button Content="Play" Click="Play_Click" Margin="10" />
                <Button Content="Pause" Click="Pause_Click" Margin="10"/>
                <Button Content="Stop" Click="Stop_Click" Margin="10" />
            </StackPanel>
        </StackPanel>
    </Grid>
</Page>

В файле кода C# пропишем обработчики всех событий:

using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

namespace MediaApp
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }
		// начало воспроизведения
        void Play_Click(object sender, RoutedEventArgs e)
        {
            media.Play();
        }
		// пауза
        void Pause_Click(object sender, RoutedEventArgs e)
        {
            if (media.CanPause)
                media.Pause();
        }
		// остановка
        void Stop_Click(object sender, RoutedEventArgs e)
        {
            media.Stop();
        }
		// если открытие файла завершилось с ошибкой
        void Media_MediaFailed(object sender, ExceptionRoutedEventArgs e)
        {
            headerBlock.Text = "Ошибка открытия файла";
        }
		// открытие файла
        void Media_MediaOpened(object sender, RoutedEventArgs e)
        {
            headerBlock.Text = media.Source.LocalPath;
        }
		// окончание воспроизведения
        void Media_MediaEnded(object sender, RoutedEventArgs e)
        {
            headerBlock.Text = "Воспроизведение завершено";
        }
    }
}
Воспроизведение аудио на Universal Windows Platform
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850