配置视频流
视频流的配置比音频流更灵活。 这是因为组成视频的帧的属性因文件而异。 检索所使用的编解码器的编解码器格式时,必须为视频流配置对象设置以下值。
值 | 说明 |
---|---|
比特率 | 调用 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。 设置的值必须小于或等于编解码器支持的最大复杂性。
相关主题