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


Использование медиаресурсов с медиасеансом

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

Ниже приведены основные действия, которые будут выполняться в приложении:

  1. Создайте источник мультимедиа. Чтобы создать источник мультимедиа, используйте сопоставитель источника. Дополнительные сведения см. в решателе источников . Сопоставитель источников возвращает указатель на интерфейс IMFMediaSource. (Если вы создали собственный источник мультимедиа, вместо этого можно предоставить пользовательский метод создания.)

  2. Настройте презентацию. Чтобы настроить презентацию источника, вызовите IMFMediaSource::CreatePresentationDescriptor. Вы можете изменить эту копию, но изменения не становятся активными до тех пор, пока воспроизведение не начнется. Не изменяйте дескриптор презентации во время воспроизведения. Дополнительные сведения см. в описаниях презентаций .

  3. Создайте топологию, содержащую источник мультимедиа. См. раздел Топологиидля получения дополнительной информации.

  4. Используйте сеанс мультимедиа для управления воспроизведением. Сеанс мультимедиа вызывает методы источника мультимедиа. Приложение не должно вызывать никакие методы в источнике мультимедиа в настоящее время.

  5. Перед тем как выпускать источник мультимедиа, вызовите IMFMediaSource::Shutdown, чтобы завершить работу источника.

    Заметка

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

     

При использовании сеанса мультимедиа единственными методами, которые следует вызывать в источнике мультимедиа, являются CreatePresentationDescriptor, GetCharacteristicsи Shutdown. В частности:

  • Не вызывайте Начать, Приостановитьили Остановить; эти методы должны вызываться только медиасессией.

  • Не вызывайте методы IMFMediaStream.

  • Не извлекайте события непосредственно из источника мультимедиа или любого из потоков. Сеанс медиа должен получать эти события для корректной работы конвейера. Сеанс мультимедиа пересылает все события, необходимые приложению.

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