Настройка видеопотоков

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

Значение Описание
Скорость Вызовите IWMStreamConfig::SetBitrate , чтобы задать нужное значение. Видеокодек попытается сжать носитель в соответствии с вашими спецификациями. Если значения слишком низкие, результирующее сжатое видео будет очень снижено.
Окно буфера Вызовите IWMStreamConfig::SetBufferWindow , чтобы задать нужное значение. Видеокодек попытается сжать носитель в соответствии с вашими спецификациями. Если значения слишком низкие, результирующее сжатое видео будет очень снижено.
WMVIDEOINFOHEADER.rcSource Левый верхний угол должен иметь значение 0,0. В правом нижнем углу должны быть заданы размеры кадра. Например, в потоке 640 x 480 эти параметры будут иметь значение 0,0,640,480.
WMVIDEOINFOHEADER.rcTarget Должен соответствовать rcSource.
WMVIDEOINFOHEADER.dwBitRate Должен соответствовать скорости, установленной для потока.
WMVIDEOINFOHEADER. AvgTimePerFrame Задайте приблизительное время для каждого кадра.
BITMAPINFOHEADER.biWidth Задайте ширину (в пикселях) нужного размера кадра.
BITMAPINFOHEADER.biHeight Задайте высоту в пикселях нужного размера кадра.

 

Видеосодержимое воспроизводит неправильно, если оно не закодировано в размере, кратном четырем для ширины и высоты. Исключением является несжатый RGB-видео , который может быть любого размера. При попытке задать размер, не кратный четырем, модуль записи вернет одну из следующих ошибок:

  • NS_E_INVALID_INPUT_FORMAT
  • NS_E_INVALID_OUTPUT_FORMAT
  • NS_E_INVALIDPROFILE

Если вы используете кодировку с переменной скоростью, может потребоваться внести другие корректировки. Дополнительные сведения см. в разделе Настройка потоков VBR.

Некоторые кодеки Windows Media Video поддерживают несколько уровней сложности. Уровни сложности определяют алгоритмы, которые кодек будет использовать при кодировании видеопотока. Использование высокого уровня сложности потребует больше вычислительной мощности для кодирования и декодирования.

Каждый кодек, поддерживающий параметры сложности, предоставляет следующие параметры, которые можно получить с помощью метода IWMCodecInfo3::GetCodecProp .

Параметр Описание
g_wszComplexityMax Максимальный уровень качества, поддерживаемый кодеком.
g_wszComplexityOffline Предлагаемый уровень качества для автономного воспроизведения.
g_wszComplexityLive Предлагаемый уровень качества для воспроизведения потоковой передачи.

 

Чтобы задать сложность видеопотока в профиле, используйте метод IWMPropertyVault::SetProperty , используя свойство g_wszComplexity. Заданное значение должно быть меньше или равно максимальной поддерживаемой сложности кодека.

Конфигурация, общая для всех потоков

Настройка потоков

Параметры сложности видео