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


Создание приемника файлов ASF

Приемник файлов ASF — это реализация IMFMediaSink, предоставляемая Media Foundation, которую приложение может использовать для архивации данных мультимедиа ASF в файл. Сведения об объектной модели приемников мультимедиа ASF и общем использовании см. в приемниках мультимедиа ASF.

Существует два способа создания экземпляра приемника файлов ASF. Можно вызвать MFCreateASFMediaSink или MFCreateASFMediaSinkActivate.

При вызове MFCreateASFMediaSinkнеобходимо указать поток байтов для выходного файла, в который приемник будет записывать содержимое ASF во время сеанса кодирования. Указанный поток байтов должен иметь возможности поиска и записи в противном случае вызов MFCreateASFMediaSink завершается ошибкой с кодом ошибки E_FAIL. Этот вызов создает объект приемника файлов в процессе и возвращает указатель на интерфейс IMFMediaSink приемника файлов.

При вызове MFCreateASFMediaSinkActivateнеобходимо указать URL-адрес выходного файла, в который приемник файлов будет записывать данные мультимедиа. В этом случае приемник файлов внутренне создает поток байтов. Функция возвращает указатель на интерфейс IMFActivate приемника файлов. Кому

Рассмотрим MFCreateASFMediaSinkActivate вместо MFCreateASFMediaSink, если топология кодирования разработана следующим образом:

  • Топология кодирования предназначена для пути защищенного носителя (PMP), а приемник файлов используется в внепроцессорном режиме.

  • Выходной узел топологии создается с помощью возвращаемого указателя на объект активации приемника файлов, и приложение отслеживает потоки в приемнике файлов по номерам потоков.

    Заметка

    Можно активировать приемник файлов, вызвав IMFActivate::ActivateObject. Однако не нужно активировать объект эксплицитно. Сеанс мультимедиа отслеживает объект активации и автоматически активирует приемник файлов во время сеанса кодирования.

     

  • Сведения о потоке настраиваются в объекте ContentInfo. Обсуждается в следующем подразделе.

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

  • Основные сведения о потоке
  • Сведения о режиме кодирования
  • Метаданные

Приемник файлов реализует объект ASF ContentInfo и предоставляет интерфейс IMFASFContentInfo, чтобы приложение могло его использовать для задания информации, связанной с потоками и кодировкой. В зависимости от вызываемой функции для создания приемника файлов существует два способа получения ссылки на интерфейс IMFASFContentInfo.

  • При вызове функции MFCreateASFMediaSink приложение должно запрашивать интерфейс IMFASFContentInfo через вызов IMFMediaSink::QueryInterface на возвращенном приемнике файлов.
  • Если вы решили вызвать MFCreateASFMediaSinkActivate, эта функция ожидает, что перед вызовом есть полностью настроенный объект ContentInfo. Для этого необходимо создать пустой объект ContentInfo, вызвав MFCreateASFContentInfo, а затем настроить его со всеми необходимыми сведениями. Передайте настроенный объект ContentInfo в MFCreateASFMediaSinkActivate, чтобы получить указатель на объект активации приемника. Невозможно активировать приемник файлов с помощью возвращаемого объекта активации, а затем изменить любую информацию о потоке или кодировке.

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

приемники мультимедиа ASF

компоненты ASF уровня конвейера

поддержка ASF в Media Foundation