Создание приемника файлов ASF
Приемник файлов ASF — это реализация IMFMediaSink , предоставляемая Media Foundation, которую приложение может использовать для архивации данных мультимедиа ASF в файл. Сведения об объектной модели приемников мультимедиа ASF и общем использовании см. в разделе Приемники мультимедиа ASF.
Существует два способа создания экземпляра приемника файлов ASF. Вы можете вызвать MFCreateASFMediaSink или MFCreateASFMediaSinkActivate.
При вызове MFCreateASFMediaSink необходимо указать поток байтов для выходного файла, в который приемник будет записывать содержимое ASF во время сеанса кодирования. Указанный поток байтов должен иметь возможности поиска и записи, в противном случае вызов MFCreateASFMediaSink завершается сбоем с кодом ошибки E_FAIL. Этот вызов создает внутрипроцессный объект приемника файла и возвращает указатель на интерфейс IMFMediaSink приемника файлов.
При вызове MFCreateASFMediaSinkActivate необходимо указать URL-адрес выходного файла, в который приемник файла будет записывать данные мультимедиа. В этом случае приемник файла внутренне создает поток байтов. Функция возвращает указатель на интерфейс IMFActivate приемника файлов. Кому
Рассмотрим MFCreateASFMediaSinkActivate вместо MFCreateASFMediaSink, если топология кодирования разработана следующим образом:
Топология кодирования используется для защищенного пути к мультимедиа (PMP), а приемник файлов используется вне процесса.
Выходной узел топологии создается с помощью возвращенного указателя на объект activate приемника файлов, и приложение отслеживает потоки в приемнике файлов по номерам потоков.
Примечание
Вы можете активировать приемник файлов, вызвав IMFActivate::ActivateObject. Однако активировать объект не нужно. Сеанс мультимедиа отслеживает объект активации и автоматически активирует приемник файла во время сеанса кодирования.
Сведения о потоке настраиваются в объекте ContentInfo. Дискуцируется в следующем подразделе.
После создания приемника файлов ASF его необходимо настроить перед построением топологии. Чтобы создать выходной файл, приемник файла должен знать следующие сведения.
- Основные сведения о потоке
- Сведения о режиме кодирования
- Метаданные
Приемник файлов реализует объект ContentInfo ASF и предоставляет интерфейс IMFASFContentInfo , чтобы приложение пользовалось им для задания сведений, связанных с потоками и кодировкой. В зависимости от функции, вызванной для создания приемника файлов, существует два способа получения ссылки на интерфейс IMFASFContentInfo .
- При вызове функции MFCreateASFMediaSink приложение должно запросить интерфейс IMFASFContentInfo , вызвав IMFMediaSink::QueryInterface в возвращенном приемнике файла.
- Если вы решили вызвать MFCreateASFMediaSinkActivate, эта функция ожидает, что перед вызовом у вас будет полностью настроенный объект ContentInfo. Для этого необходимо создать пустой объект ContentInfo, вызвав MFCreateASFContentInfo , а затем настроить его со всеми необходимыми сведениями. Передайте настроенный объект ContentInfo в MFCreateASFMediaSinkActivate , чтобы получить указатель на объект активации приемника. Вы не можете активировать приемник файлов с помощью возвращенного объекта активации, а затем изменить поток или сведения о кодировке.
Сведения о настройке потоков приемников и конкретных свойств см. в следующих разделах:
- Добавление сведений о потоке в приемник файлов ASF
- Задание свойств в приемнике файлов
- Добавление метаданных в приемник файлов
Связанные темы