Задание свойств в объекте ContentInfo
При создании ASF-файла объект ContentInfo должен знать характеристики мультимедийного содержимого, чтобы различные объекты заголовков заполнялись правильными значениями.
- Параметры, связанные с содержимым, в объекте ContentInfo
- Настройка объекта ContentInfo с параметрами кодировщика
- Связанные темы
Параметры, связанные с содержимым, в объекте ContentInfo
Параметры конфигурации содержимого — это параметры потока, содержащиеся в профиле и указывающие идентификатор потока, тип носителя и параметры контейнера утечки для приемника мультимедиа. После установки профиля в объекте ContentInfo путем вызова IMFASFContentInfo::SetProfile эти значения отражаются в созданном объекте заголовка ASF. Дополнительные сведения об этих параметрах см. в разделе Создание и настройка потоков ASF.
Настройка объекта ContentInfo с параметрами кодировщика
Цифровые аудио- или видеоданные мультимедиа являются сложными и занимают большой объем памяти. В большинстве случаев аудио и видео сжимаются с помощью кодировщиков перед добавлением в ASF-файл. В Media Foundation кодировщики реализуются как преобразования Media Foundation (MFT) с одним входом и одним выходом. Необходимо выбрать тип выходного носителя в зависимости от типа носителя входного потока и типа кодирования, выбранного для сжатия потока.
Перед сеансом кодирования кодировщик необходимо настроить, задав соответствующие свойства в зависимости от типа кодирования.
После настройки кодировщика необходимо настроить объект ContentInfo со значениями кодировщика, так как мультиплексор ASF и приемник мультимедиа ASF, которые инициализируются с заполненным объектом ContentInfo, используют такие параметры, как значения контейнеров утечки, для создания пакетов данных ASF. Значения не сохраняются в окончательном объекте заголовка ASF. Параметры кодирования предоставляются в виде свойств. Чтобы настроить объект ContentInfo со свойствами кодировщика, сделайте следующее:
- Получите указатель на хранилище свойств кодировщика, запросив кодировщик (интерфейс IMFTransform ) непосредственно для интерфейса IPropertyStore .
- Вызовите IMFASFContentInfo::GetEncodingConfigurationPropertyStore. Чтобы задать свойства потока, укажите идентификатор потока в параметре wStreamNumber ; для свойств уровня файла передайте значение 0. Параметр ppIStore получает указатель на интерфейс IPropertyStore . Полученное хранилище свойств пусто.
- Вызовите метод IPropertyStore::GetValue в кодировщике и получите значение свойства, указав константы ключа свойства. Полный список свойств кодирования см. в справочнике по программированию кодека.
- Вызовите метод IPropertyStore::SetValue для объекта ContentInfo, чтобы задать требуемое свойство в хранилище свойств.
- Повторите шаги 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-файле. |
Связанные темы