Поделиться через


Воспроизведение файлов мультимедиа с помощью Media Foundation

В этом руководстве показано, как воспроизводить файлы мультимедиа с помощью объекта сеанса мультимедиа.

Необходимые условия

Прежде чем читать эту статью, необходимо ознакомиться со следующими понятиями Media Foundation:

Заметка

В этом разделе не описывается, как воспроизводить файлы, защищенные управлением цифровыми правами (DRM). Сведения о DRM в Microsoft Media Foundation см. в разделе Воспроизведение защищенных файлов мультимедиа.

 

Обзор

Для воспроизведения файла мультимедиа с сеансом мультимедиа используются следующие объекты:

  • источника мультимедиа — это объект, который анализирует файл мультимедиа или другой источник данных мультимедиа. Источник мультимедиа создает объекты потоков для каждого звукового или видеопотока в файле. декодеры преобразуют закодированные мультимедиа данные в видео и звук без сжатия.
  • разрешитель источника создает источник мультимедиа из URL-адреса.
  • расширенный отрисовщик видео (EVR) отображает видео на экране.
  • потоковый аудиодекодер (SAR) воспроизводит звук через динамик или другое выходное устройство.
  • Топология определяет поток данных от источника мультимедиа к EVR и SAR.
  • сеанс мультимедиа управляет потоком данных и отправляет события состояния в приложение. На следующей схеме показан этот процесс.

схема , показывающая воспроизведение с помощью сеанса мультимедиа

Ниже приведены общие сведения о шагах, необходимых для воспроизведения файла мультимедиа с помощью сеанса мультимедиа:

  1. Вызовите функцию MFStartup, чтобы инициализировать платформу Media Foundation.

  2. Вызовите MFCreateMediaSession, чтобы создать новый экземпляр сеанса мультимедиа.

  3. Используйте сопоставитель источника для создания источника мультимедиа. Дополнительные сведения см. в разделе Использование средства разрешения источника.

  4. Создайте топологию, которая подключает источник мультимедиа к EVR и SAR. На этом шаге приложение создает частичную топологию, которая не включает декодеры. Дополнительные сведения см. в разделе Создание топологий воспроизведения.

  5. Вызовите IMFMediaSession::SetTopology, чтобы задать топологию в сеансе мультимедиа.

  6. Используйте интерфейс IMFMediaEventGenerator, чтобы получить события из медиасессии.

  7. Вызовите IMFMediaSession::Start, чтобы начать воспроизведение. После запуска воспроизведения его можно приостановить, вызвав IMFMediaSession::P ause, или остановить его, вызвав IMFMediaSession::Stop.

  8. Когда приложение завершает работу, выпустите ресурсы:

    1. Вызовите IMFMediaSession::Close, чтобы закрыть сеанс мультимедиа. Этот метод является асинхронным. По завершении сеанс мультимедиа отправляет событие MESessionClosed. Затем безопасно выполнить оставшиеся шаги.
    2. Вызовите IMFMediaSource::Shutdown, чтобы закрыть источник мультимедиа.
    3. Вызовите IMFMediaSession::Shutdown, чтобы завершить сеанс мультимедиа.
    4. Вызовите MFShutdown, чтобы завершить работу платформы Media Foundation.

В следующих разделах показан полный пример кода:

медиа-сессия

воспроизведение звука и видео