Настройка видеопотоков
Видеопотоки более гибки в своей конфигурации, чем аудиопотоки. Это связано с тем, что свойства кадров, составляющих видео, могут сильно отличаться от одного файла к другому. При получении формата кодека для используемого кодека необходимо задать следующие значения для объектов конфигурации видеопотока.
Значение | Описание |
---|---|
Скорость | Вызовите 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. Заданное значение должно быть меньше или равно максимальной поддерживаемой сложности кодека.
Связанные темы