среда, 16 октября 2013 г.

WPF. Audio, Video, and Speech

WPF дозволяє інтегрувати мультимедійний контент в апплікаціях. Це досягається за допомогою класів  SoundPlayer, MediaPlayer, і MediaElement


Використання SoundPlayer, SoundPlayerAction і SystemSounds

Клас SoundPlayer  був введений в. NET Framework 2.0 у вигляді керованого класу, щоб зробити можливим аудіо в Microsoft Windows  апплікаціях. Він легкий і простий у використанні, але має значні обмеження:
  • може програвати тільки нестиснені (uncompressed) .wav файли. Він не може читати стиснені .wav файли або файли в інших аудіо форматах;
  • не підтримує відтворення одночасно більше одного звуку;
  • крім того, розробник не має ніякого контролю над звуком, баланcoм, швидкістю, або будь-якими  іншими аспектами відтворення звуку.
Незважаючи на свою обмеженість, SoundPlayer  може бути корисним і легким способом включити звук у апплікації. Він забезпечує базовий набір членів для завантаження і відтворення нестиснутих  (uncompressed) .wav файлів
Найважливіші  мембери класу SoundPlayer.
Мембер Тип Опис
IsLoadCompleted Пропертя Повертає  bool значення, що показує, чи успішно виконане завантаження .wav файлу
Load Метод Виконує синхронне завантаження звукового об'єкта.
LoadAsync Метод Виконує асинхронне завантаження звукового об'єкта.
LoadComplete Івент Рейзається при успішному або неуспішному завантаженні .wav файлу.
LoadTimeout Пропертя Повертає або задає час в мілісекундах, за який повинен бути завантажений .wav файл
Play Метод Асинхронно відтворює .wav файл
PlayLooping Метод Циклічно і Асинхронно відтворює .wav файл
PlaySync Метод Синхронно відтворює .wav файл
SoundLocation Пропертя Повертає або задає шлях до файлу або URL-адресу для загрузки .wav файлу
SoundLocationChanged Івент Рейзається  після задання нового шляху до файлу.
Stop Метод Зупиняє відтворення звукового файлу, якщо воно виконується.
Stream Пропертя Повертає або задає потік потік для завантаження .wav файлу
StreamChanged Івент Рейзається після задання нового потоку Stream для джерела звукового файлу.
Клас SoundPlayerAction
Клас SoundPlayerAction дозволяє більш зручно використовувати клас SoundPlayer . Клас успадкований від TriggerAction, який дозволяє використовувати його у відповідь на будь-яку подію
Capture
Системні звуки (SystemSounds)
Однією з особливостей операційної системи Windows , є її здатність відображати аудіофайли на певні системні події. Поряд з SoundPlayer в WPF також надано клас SystemSounds , що дозволяє отримати доступ до найбільш часто використовуваних з цих звуків і задіяти їх у власних додатках. Ця техніка працює краще , якщо все, що потрібно - це прості короткі звуки , призначені для того , щоб повідомити про завершення якоїсь тривалої операції або подати сигнал попередження .
Можна получити доступ до наступних системних звуків :
  • Asterisk (Знак питання )
  • Веер (Повідомлення про отримання пошти)
  • Exclamation (Вигук)
  • Hand (Критична помилка)
  • Question (Питання )
Використання MediaPlayer і MediaElement
Для відтворення МРЗ-аудіо або MPEG-відео призначені класи MediaPlayer і MediaElement. Обидва ці класи використовувати функціональність Windows Media Player 10.
Працюють під платформами:
  • Windows 8;
  • Windows Server 2012;
  • Windows 7;
  • Windows Vista SP2,
  • Windows Server 2008 (Server Core Role not supported);
  • Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
MediaPlayer і MediaElement класи дуже схожі, і мають багато спільних членів. Основна відмінність між цими двома класами:
  • MediaPlayer не має UI і таким чином не може легко використовуватись в XAML
  • MediaElement є врапером об'єкта MediaPlayer і забезпечує візуальний інтерфейс для відтворення відео файлів. MediaElement призначений для використання в XAML. MediaElement є повноцінним WPF елементом, який може бути використаний для відображення відео в апплікаціях.
Найважливіші мембери класів MediaPlayer і MediaElement
Мембер Тип Опис
Balance Пропертя Встановлює баланс між лівим і правим каналом як число від -1 (тільки лівий канал) до 1 (тільки правий канал)
DownloadProgress, BufferingProgress Пропертя Показує відсоток завантаження (зручно в тих випадках, коли джерелом є URL, який вказує на місце розташування в Інтернеті або на іншому комп'ютері). Відсоток представлений у вигляді числа від 0 до 1
HasAudio, HasVideo Проперті Вказує на те, чи містить поточний завантажений мультимедійний файл, відповідно, аудіо-та відео.
LoadedBehavior Пропертя Вказує, чи повинен файл відтворюватися автоматично при
завантаженні.
Play - файл відтворюється автоматично при завантаженні.
Manual - файл не буде відтворення, поки не викликати метод Play.
Ця пропертя існує тільки в MediaElement.
NaturalDuration, NaturalVideoHeight, NaturalVideoWidth Проперті Вказують на те, чи йде відтворення на нормальній швидкості, а також задають розмір відео-вікна.
Position Пропертя Об'єкт TimeSpan, який вказує поточне місце розташування в медіафайлів. Це властивість можна встановлювати для пропуску частини файлу і продовжити відтворення з вказаного місця
Source Пропертя Повертає універсальний ідентифікатор ресурсу (URI), з яких
мультимедійний файл був завантажений. Для MediaPlayer ця пропертя лише для читання. Для MediaElement ви можете встановити значення для цієї проперті декларативно в XAML.
SpeedRatio Пропертя Встановлює підвищену швидкість при відтворенні звуку (або відео). Значення за замовчуванням дорівнює 1, що означає нормальну швидкість, у той час як 2 - подвійну швидкість, 10 - швидкість, вдесятеро вище нормальної, 0,5 - половину нормальної швидкості і т.д. Можна використовувати будь-яке позитивне значення типу double
Volume Пропертя Встановлює гучність у вигляді числі від 0 (повна тиша) до 1 (повна гучність). Дефолтне значення дорівнює 0,5
Open Метод Завантажує новий мультимедійний файл
Pause Метод Тимчасово призупиняє відтворення, не змінюючи його позиції. Якщо викликати Play () знову, то відтворення почнеться з поточної позиції. Якщо відтворення не відбувається, не дає ніякого ефекту
Play Метод Починає відтворення. Не має ніякого ефекту, якщо файл вже відтворюється
Stop Метод Зупиняє відтворення і скидає позицію на початок файлу. Якщо знову викликати Play (), то відтворення почнеться з початку файлу. Не має ефекту, якщо відтворення вже зупинено
MediaEnded Івент Виникає, коли медіа-файл закінчив відтворення
MediaFailed Івент Виникає, коли є проблема пошуку або завантаження файлу
MediaOpened Івент Виникає, коли медіа-файл завершив завантаження
Існує кілька важливих деталей повязаних з роботою з MediaPlayer :
  • MediaPlayer необхідно створюєти поза івент хендлером, щоб він існував протягом життєвого циклу вікна .
  • Обов'язково повинен бути створений хендлер івента Window.Unloaded , в якому викликається метод Close( ) для зупинки будь-якого звуку при закритті вікна .
  • Розташування файлу вказується у вигляді URI.
  • Методи Open( ) і Play( ) не генерують екзепшинів. Натомість пропонується самостійно обробляти івенти MediaOpened і MediaFailed , щоб визначити , чи було запущено відтворення аудіо.

Скачати приклад











Комментариев нет:

Отправить комментарий