Задание свойств в приемнике файлов
Приемник файлов ASF — это реализация IMFMediaSink , предоставляемая Media Foundation, которую приложение может использовать для сохранения данных ASF в файле. Сведения об объектной модели и общем использовании мультимедиа приемников ASF можно найти в разделе приемники мультимедиа ASF.
После создания приемника файлов ASFего необходимо настроить с информацией о потоках в выходном файле. Эта процедура описана в разделе Добавление сведений о потоке в ASF-файл приемника. Дополнительные свойства приемника файлов можно задать в зависимости от типа кодирования; утечки контейнеров; общие свойства файла. Эти параметры не записываются в окончательный объект заголовка ASF. В этом разделе описывается процесс добавления этих свойств в хранилище свойств приемника файлов.
Объект ContentInfo поддерживает глобальные свойства файла и отдельные свойства потока для приемника файлов. Сведения о получении ссылки на объект ContentInfo ASF файлового приемника см. в статье Создание приемника файлов ASF.
Чтобы получить ссылку на хранилище свойств приемника файлов (IPropertyStore), вызовите IMFASFContentInfo::GetEncodingConfigurationPropertyStore в ссылке объекта ContentInfo приемника файлов.
Свойства кодирования потока
Чтобы правильно кодировать содержимое файла, необходимо знать определенные сведения о кодировке, такие как тип кодирования и связанные параметры кодирования. Эти значения задаются в приемнике файлов в качестве значений свойств в хранилище свойств, поддерживаемом объектом ASF ContentInfo. При конфигурировании приемника файлов перед созданием экземпляров соответствующих энкодеров можно использовать объект ContentInfo со всеми заполненными свойствами для создания энкодеров Windows Media. В этом случае свойства автоматически задаются в создаваемых экземплярах кодировщиков. И наоборот, если вы создаете кодировщики перед приемником, убедитесь, что свойства, заданные для кодировщиков, копируются в хранилище свойств приемника файлов.
Чтобы задать свойства кодирования, необходимо получить доступ к хранилищу свойств потока приемника файлов. Передайте номер потока в параметре wStreamNumber метода IMFASFContentInfo::GetEncodingConfigurationPropertyStore. Номера потоков должны соответствовать значениям, заданным при настройке каждого потока в профиле. Значения свойств задаются путем вызова IPropertyStore::SetValue. В следующей таблице описаны поддерживаемые свойства.
Свойства зависят от типа кодирования. Сведения о свойствах и соответствующих значениях, которые необходимо задать, см. в разделе «Свойства кодировки».
Свойство вытекающего ведра
Параметры нечеткого контейнера определяют фактическое окно буфера, используемое кодировщиком потока. Свойство приемника файлов MFPKEY_ASFSTREAMSINK_CORRECTED_LEAKYBUCKET содержит параметры утечки контейнера, скорость бита, окно буфера и начальную полноту буфера. Это свойство задается в хранилище свойств уровня потока для приемника файлов и должно быть задано после создания и настройки кодировщиков. Это значение задается в параметре . Во время согласования типов мультимедиа кодировщик решает окно буфера и скорость использования битов. Эти значения можно получить с помощью интерфейса IWMCodecLeakyBucket, который определен в wmcodecifaces.h, и необходимо связаться с wmcodecdspuuid.lib для вызова методов.
Полученные значения можно задать для этого свойства для каждого потока в приемнике файлов ASF.
Свойства глобального приемника файлов
Чтобы получить глобальное хранилище свойств приемника файлов, передайте 0 в параметр wStreamNumber метода IMFASFContentInfo::GetEncodingConfigurationPropertyStore. Значения свойств задаются путем вызова IPropertyStore::SetValue. В следующей таблице описаны поддерживаемые свойства.
Свойства уровня файла | Описание |
---|---|
MFPKEY_ASFMEDIASINK_BASE_SENDTIME | Время отправки указывает, когда пакет данных внутри алгоритма "leaky bucket" будет освобожден. Это значение свойства указывает на время первой отправки. Мультиплексер использует это значение для вычисления последующего времени отправки для созданных пакетов и гарантирует, что данные постоянно передаются через утечку контейнера. |
MFPKEY_ASFMEDIASINK_AUTOADJUST_BITRATE | Это значение BOOL указывает, нужно ли мультиплексору автоматически настраивать битрейт, чтобы убедиться, что данные не переполняют протекающее ведро. |
MFPKEY_ASFMEDIASINK_DRMACTION | Это указывает на операцию DRM медиаприемника ASF для создания файлов. В этом выпуске поддерживается только транскод DRM. |
Связанные разделы