Воспроизведение файлов мультимедиа с помощью Media Foundation
В этом руководстве показано, как воспроизводить файлы мультимедиа с помощью объекта сеанса мультимедиа.
Необходимые условия
Прежде чем читать эту статью, необходимо ознакомиться со следующими понятиями Media Foundation:
Заметка
В этом разделе не описывается, как воспроизводить файлы, защищенные управлением цифровыми правами (DRM). Сведения о DRM в Microsoft Media Foundation см. в разделе Воспроизведение защищенных файлов мультимедиа.
Обзор
Для воспроизведения файла мультимедиа с сеансом мультимедиа используются следующие объекты:
- источника мультимедиа — это объект, который анализирует файл мультимедиа или другой источник данных мультимедиа. Источник мультимедиа создает объекты потоков для каждого звукового или видеопотока в файле. декодеры преобразуют закодированные мультимедиа данные в видео и звук без сжатия.
- разрешитель источника создает источник мультимедиа из URL-адреса.
- расширенный отрисовщик видео (EVR) отображает видео на экране.
- потоковый аудиодекодер (SAR) воспроизводит звук через динамик или другое выходное устройство.
- Топология определяет поток данных от источника мультимедиа к EVR и SAR.
- сеанс мультимедиа управляет потоком данных и отправляет события состояния в приложение. На следующей схеме показан этот процесс.
схема
Ниже приведены общие сведения о шагах, необходимых для воспроизведения файла мультимедиа с помощью сеанса мультимедиа:
Вызовите функцию MFStartup, чтобы инициализировать платформу Media Foundation.
Вызовите MFCreateMediaSession, чтобы создать новый экземпляр сеанса мультимедиа.
Используйте сопоставитель источника для создания источника мультимедиа. Дополнительные сведения см. в разделе Использование средства разрешения источника.
Создайте топологию, которая подключает источник мультимедиа к EVR и SAR. На этом шаге приложение создает частичную топологию, которая не включает декодеры. Дополнительные сведения см. в разделе Создание топологий воспроизведения.
Вызовите IMFMediaSession::SetTopology, чтобы задать топологию в сеансе мультимедиа.
Используйте интерфейс IMFMediaEventGenerator, чтобы получить события из медиасессии.
Вызовите IMFMediaSession::Start, чтобы начать воспроизведение. После запуска воспроизведения его можно приостановить, вызвав IMFMediaSession::P ause, или остановить его, вызвав IMFMediaSession::Stop.
Когда приложение завершает работу, выпустите ресурсы:
- Вызовите IMFMediaSession::Close, чтобы закрыть сеанс мультимедиа. Этот метод является асинхронным. По завершении сеанс мультимедиа отправляет событие MESessionClosed. Затем безопасно выполнить оставшиеся шаги.
- Вызовите IMFMediaSource::Shutdown, чтобы закрыть источник мультимедиа.
- Вызовите IMFMediaSession::Shutdown, чтобы завершить сеанс мультимедиа.
- Вызовите MFShutdown, чтобы завершить работу платформы Media Foundation.
В следующих разделах показан полный пример кода:
- шаг 1. Объявление класса CPlayer
- шаг 2. Создание объекта CPlayer
- шаг 3. Открытие файла мультимедиа
- шаг 4. Создание сеанса мультимедиа
- шаг 5. Обработка событий сеанса мультимедиа
- шаг 6. Управление воспроизведением
- шаг 7. Завершение сеанса мультимедиа
- Пример воспроизведения сеанса мультимедиа
Связанные разделы