Воспроизведение файлов мультимедиа с помощью 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. Завершение сеанса мультимедиа
- Пример воспроизведения сеанса мультимедиа
Связанные темы