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


Установка свойств в объекте ContentInfo

При создании ФАЙЛА ASF объект ContentInfo должен знать характеристики содержимого мультимедиа, чтобы различные объекты заголовков заполнялись правильными значениями.

Параметры конфигурации содержимого — это параметры потока, которые содержатся в профиле и указывают идентификатор потока, тип носителя и параметры утечки контейнера для приемника мультимедиа. После установки профиля в объекте ContentInfo путем вызова IMFASFContentInfo::SetProfileэти значения отражаются в созданном объекте заголовка ASF. Дополнительные сведения об этих параметрах см. в разделе Создание и настройка потоков ASF.

Настройка объекта ContentInfo с параметрами кодировщика

Цифровые аудио- или видеоданные являются сложными и занимают большое количество памяти. В большинстве случаев аудио и видео сжимаются с помощью кодировщиков перед добавлением в ASF-файл. В Media Foundation кодировщики реализуются как преобразования Media Foundation (MFTs) с одним входным и одним выходом. Вы должны выбрать тип выходного носителя в зависимости от типа носителя входного потока и типа кодирования, выбранного для сжатия потока.

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

После настройки кодировщика необходимо настроить объект ContentInfo со значениями кодировщика, так как asF Multiplexer и приемник мультимедиа ASF, которые инициализированы с заполненным объектом ContentInfo, используйте такие параметры, как утечка значений контейнера, для создания пакетов данных ASF. Значения не сохраняются в последнем объекте заголовка ASF. Параметры кодирования предоставляются в виде свойств. Чтобы настроить объект ContentInfo со свойствами кодировщика, сделайте следующее:

  1. Получите указатель на хранилище свойств кодировщика путем запроса кодировщика (интерфейса IMFTransform) непосредственно для интерфейса IPropertyStore.
  2. Вызов IMFASFContentInfo::GetEncodingConfigurationPropertyStore. Чтобы задать свойства, относящиеся к потоку, укажите идентификатор потока в параметре wStreamNumber; Для свойств уровня файла передайте 0. Параметр ppIStore получает указатель на интерфейс IPropertyStore. Полученное хранилище свойств пусто.
  3. Вызовите IPropertyStore::GetValue в кодировщике и получите значение свойства, указав константы ключа свойства. Полный список свойств кодирования см. в справочнике по программированию codec.
  4. Вызовите IPropertyStore::SetValue в объекте ContentInfo, чтобы задать необходимое свойство в хранилище свойств.
  5. Повторите шаги 3 и 4 для каждого свойства, которое требуется задать.

Приемник мультимедиа ASF можно создать с помощью объекта активации, вызвав MFCreateASFMediaSinkActivate. Новый объект приемника мультимедиа настраивается на основе параметров приемника мультимедиа, которые можно задать в хранилище свойств объекта ContentInfo. В следующей таблице показаны константы приемника мультимедиа ASF.

Свойство Описание
MFPKEY_ASFMEDIASINK_BASE_SENDTIME Время отправки указывает, когда данные внутри протекающего ведра будут выпущены. Это значение свойства указывает время первой отправки. Мультиплексер использует это значение для вычисления последующего времени отправки для созданных пакетов и гарантирует, что данные постоянно передаются через протекающее ведро.
MFPKEY_ASFMEDIASINK_AUTOADJUST_BITRATE Это значение BOOL указывает, требуется ли мультиплексер автоматически настраивать битрейт, чтобы убедиться, что данные не переполнены ведром с утечкой.
MFPKEY_ASFMEDIASINK_DRMACTION Это указывает на действие DRM медиапотока ASF для генерации файлов. В этом выпуске поддерживается только транскод DRM.
MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET Это свойство должно быть задано, когда кодировщик решает, какое окно буфера и скорость передачи данных использовать. Чтобы задать эти значения, используйте интерфейс IWMCodecLeakyBucket. Это необходимо задать для каждого потока в ASF-файле.

 

создание объекта заголовка ASF для нового файла