配置视频流

视频流的配置比音频流更灵活。 这是因为组成视频的帧的属性因文件而异。 检索所使用的编解码器的编解码器格式时,必须为视频流配置对象设置以下值。

说明
比特率 调用 IWMStreamConfig::SetBitrate 以将 设置为所需的值。 视频编解码器将尝试压缩媒体以满足你的规范。 如果值过低,生成的压缩视频将非常降级。
缓冲区窗口 调用 IWMStreamConfig::SetBufferWindow 以将 设置为所需的值。 视频编解码器将尝试压缩媒体以满足你的规范。 如果值过低,生成的压缩视频将非常降级。
WMVIDEOINFOHEADER.rcSource 左上角必须设置为 0,0。 右下角必须设置为框架尺寸。 例如,在 640x480 流中,这些设置将为 0,0,640,480。
WMVIDEOINFOHEADER.rcTarget 必须与 rcSource 匹配。
WMVIDEOINFOHEADER.dwBitRate 必须与为流设置的比特率匹配。
WMVIDEOINFOHEADER。AvgTimePerFrame 设置为每个帧的大致时间。
BITMAPINFOHEADER.biWidth 设置为所需帧大小的宽度(以像素为单位)。
BITMAPINFOHEADER.biHeight 设置为所需帧大小的高度(以像素为单位)。

 

除非视频内容编码为宽度和高度的 4 倍大小,否则无法正常播放。 RGB 未压缩 视频例外,它可以是任意大小。 如果尝试设置的大小不是 4 的倍数,编写器将返回以下错误之一:

  • NS_E_INVALID_INPUT_FORMAT
  • NS_E_INVALID_OUTPUT_FORMAT
  • NS_E_INVALIDPROFILE

如果使用可变比特率编码,则可能需要进行其他调整。 有关详细信息,请参阅 配置 VBR 流

某些 Windows Media 视频编解码器支持多个复杂性级别。 复杂性级别确定编解码器在编码视频流时将使用的算法。 使用高复杂性级别需要更多处理能力进行编码和解码。

支持复杂性设置的每个编解码器都会公开以下设置,可以使用 IWMCodecInfo3::GetCodecProp 方法检索这些设置。

设置 说明
g_wszComplexityMax 编解码器支持的最大质量级别。
g_wszComplexityOffline 脱机播放的建议质量级别。
g_wszComplexityLive 流式播放的建议质量级别。

 

若要设置配置文件中视频流的复杂性,请使用 IWMPropertyVault::SetProperty 方法,使用 属性g_wszComplexity。 设置的值必须小于或等于编解码器支持的最大复杂性。

所有流的通用配置

配置流

视频复杂性设置