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

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

Предварительные требования

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

Примечание

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

 

Обзор

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

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

diagram showing playback using the media session

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

  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.

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

Сеанс мультимедиа

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