去隔行视频
[与此页面关联的功能 Windows Media Format 11 SDK 是旧版功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用源读取器和接收器编写器,而不是 Windows Media Format 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
某些视频源(如视频捕获卡)提供用于交错显示的视频数据。 隔行扫描视频的每个帧由两个字段组成。 顶部字段包含视频的第一行和之后的其他每一行。 底部字段包含视频的第二行以及之后的其他每一行。 因此,一个字段包含所有偶数编号行,另一个字段包含所有奇数编号行。 构成帧的字段表示的呈现时间略有不同,因此在交错时,它们不会形成静态图像。
如果要在计算机监视器上显示视频,则视频的每一帧都应显示为一个图像 (这种一次显示一个整帧视频的方法称为 渐进式 视频。) 如果以渐进方式显示隔行扫描视频,则由于两个字段之间的时间差,这些帧可能看起来不正确。 Windows Media Video 编解码器和 Windows Media Video Advanced Profile 编解码器都支持将隔行扫描内容转换为渐进式帧的预处理功能。
若要获取编解码器反隔行输入视频,请调用 IWMWriterAdvanced2::SetInputSetting 方法。 要使用的设置是g_wszDeinterlaceMode。 将去隔行模式设置为以下值之一。
值 | 描述 |
---|---|
WM_DM_NOTINTERLACED | 输入是渐进式的。 如果之前已将去隔行模式设置为另一个值,请使用此设置停止去隔行。 |
WM_DM_DEINTERLACE_NORMAL | 选择此模式以使用运动补偿机制 () 混合交错帧的偶数和奇数字段。好处:
|
WM_DM_DEINTERLACE_HALFSIZE | 当输出分辨率为输入分辨率的一半或更少时,请选择此模式。 例如,当输入视频分辨率为 640 x 480 像素且输出视频分辨率为 320 x 240 像素时,请使用此模式。好处:
|
WM_DM_DEINTERLACE_HALFSIZEDOUBLERATE | 当输出分辨率为输入分辨率的一半或更少且输出 帧速率 高两倍时,请选择此模式。 例如,当输入视频分辨率为 640 x 480 像素(每秒 30 个隔行扫描帧),输出视频分辨率为 320 x 240 像素(每秒 60 帧)时,请使用此模式。好处:
|
WM_DM_DEINTERLACE_INVERSETELECINE | 选择此模式可将 30 帧/秒的电视视频转换为原始电影的 24 帧/秒。好处:
|
WM_DM_DEINTERLACE_VERTICALHALFSIZEDOUBLERATE | 当垂直输出分辨率为输入垂直分辨率的一半或更少且输出 帧速率 高两倍时,请选择此模式。 例如,输入垂直视频分辨率为 640 x 480 像素(每秒 30 个交错帧),输出垂直视频分辨率为 320 x 240 像素(每秒 60 帧)。好处:
|
对于混合内容,在传递新类型的样本之前,请根据需要设置去隔行模式。 例如,若要使用渐进式输入开始编码,无需设置任何反隔行模式。 如果某些示例需要正常的去隔行扫描,则必须将反隔行模式设置为WM_DM_DEINTERLACE_NORMAL。 然后,若要处理其他渐进式样本,必须将去隔行模式设置为WM_DM_NOTINTERLACED。
反向电视电影设置
有关反转电视电影的说明,请参阅 使用反向 Telecine。
如果将去隔行模式设置为 WM_DM_DEINTERLACE_INVERSETELECINE,可以通过调用 IWMWriterAdvanced2::SetInputSetting 来指定第一个输入帧的电视电影模式。 要使用的设置是g_wszInitialPatternForInverseTelecine。 将初始模式设置为以下值之一。
值 | 描述 |
---|---|
WM_DM_IT_DISABLE_COHERENT_MODE | 指定输入媒体已完成电视电影过程,但帧不再处于可预测模式。 这通常表示媒体是在电视电影处理后编辑的。 使用此设置时,编解码器会尝试自行重建原始帧。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_TOP | 指定 AA 帧的顶部字段是第一个示例。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_TOP | 指定 BB 帧的顶部字段是第一个示例。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_TOP | 指定 BC 帧的顶部字段是第一个示例。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_TOP | 指定 CD 帧的顶部字段是第一个示例。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_TOP | 指定 DD 帧的顶部字段是第一个示例。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_AA_BOTTOM | 指定 AA 帧的底部字段是第一个示例。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BB_BOTTOM | 指定 BB 帧的底部字段是第一个示例。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_BC_BOTTOM | 指定 BC 帧的底部字段是第一个示例。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_CD_BOTTOM | 指定 CD 帧的底部字段是第一个示例。 |
WM_DM_IT_FIRST_FRAME_IN_CLIP_IS_DD_BOTTOM | 指定 DD 帧的底部字段是第一个示例。 |