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


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

Сеанс мультимедиа предоставляет интерфейс IMFMediaSession. Существует два способа создания сеанса мультимедиа в зависимости от того, будет ли ваше приложение поддерживать защищенное содержимое:

  • Если ваше приложение не поддерживает защищенное содержимое, можно создать сеанс мультимедиа, вызвав MFCreateMediaSession. Эта функция создает сеанс мультимедиа внутри процесса приложения.
  • Чтобы поддерживать защищенное содержимое, создайте сеанс мультимедиа, вызвав MFCreatePMPMediaSession. Эта функция создаёт сеанс мультимедиа в рамках процесса Защищённого Пути Мультимедиа (PMP). Приложение получает указатель на прокси-объект, который передает вызовы методов через границу процесса. Обратите внимание, что сеанс мультимедиа PMP можно использовать для воспроизведения четкого содержимого, а также защищенного содержимого.

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

  1. Создайте топологию.
  2. Поставьте топологию в очередь на сеансе мультимедиа путем вызова IMFMediaSession::SetTopology.
  3. Управление потоком данных путем вызова IMFMediaSession::Start, IMFMediaSession::Pauseили IMFMediaSession::Stop.
  4. Перед выходом приложения вызовите IMFMediaSession::Close, чтобы закрыть сеанс мультимедиа.
  5. Закройте все источники мультимедиа, созданные приложением, вызвав IMFMediaSource::Shutdown.
  6. Завершение сеанса мультимедиа путем вызова МВФMediaSession::Shutdown.

При использовании сеанса мультимедиа приложение не должно напрямую запускать, приостановить или остановить источник мультимедиа. Все изменения состояния должны быть инициированы путем вызова методов IMFMediaSession. Обработку изменений состояния источника мультимедиа осуществляет медиа-сессия.

Многие другие сведения зависят от конкретных функциональных возможностей приложения.

Защищенное содержимое

Чтобы воспроизвести защищенное содержимое, необходимо создать сеанс мультимедиа внутри защищенного пути мультимедиа (PMP), вызвав MFCreatePMPMediaSession. Эта функция создает экземпляр сеанса мультимедиа внутри PMP и возвращает указатель на прокси-объект, который упрощенно передает интерфейсы через процессную границу.

В большинстве случаев использование сеанса мультимедиа внутри PMP прозрачно для приложения. Однако приложению может потребоваться вызвать определенные действия, позволяющие пользователю воспроизводить содержимое. Например, пользователю может потребоваться получить лицензию DRM. Media Foundation определяет универсальный механизм этих действий с помощью интерфейса IMFContentEnabler.

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

Таймер для презентации

Сеанс мультимедиа управляет всеми аспектами часов презентации:

  • Создание презентационных часов.

  • Выбор источника времени.

  • Уведомление мультимедийных приемников о синхронизации времени

  • Запуск, остановка и приостановка часов по мере необходимости.

  • Отключение часов.

Чтобы получить указатель на часы презентации, вызовите IMFMediaSession::GetClock на сеансе мультимедиа. Часы презентации не возвращают верное время, пока сеанс мультимедиа не отправит событие MESessionTopologyStatus с флагом MF_TOPOSTATUS_READY. До этого GetClock возвращает MF_E_CLOCK_NO_TIME_SOURCE.

Приложение, использующее сеанс мультимедиа, никогда не должно запускать, останавливать или приостанавливать часы презентации, изменять частоту часов или выключать их.

Когда приложение вызывает IMFMediaSession::Start, сессия мультимедиа запускает часы презентации с начальным временем, равным стартовой позиции, указанной в методе Старт. Дополнительные сведения о сеансе мультимедиа см. в сеансе мультимедиа ().

медиа-сеанс