使用隔行扫描视频
[与此页面关联的功能 Windows Media Format 11 SDK 是一项旧功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用源读取器和接收器编写器,而不是 Windows Media 格式 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
有两种基本类型的视频编码:渐进式和交错。 在渐进式编码中,每个帧都是一个视频帧的编码表示形式。 在交错编码中,每个帧都是视频中所有偶数像素行或所有奇数行的编码表示形式。 每个交错帧称为 字段,因此存在奇数字段甚至字段。 交错显示 (像电视) 一次呈现一个字段,交替呈现字段。 渐进式显示器一次性呈现所有帧。
Windows Media Video 9 高级配置文件编解码器支持在压缩流中保持交错。
何时使用隔行扫描视频
仅当内容显示在隔行扫描设备上时,编码交错视频才有用。 可能需要交错在电视 (通过机顶盒或其他设备) 观看的内容。 不应将打算在计算机显示器上以独占方式查看的内容编码为隔行扫描。
若要将交错视频编码为渐进式视频,必须配置输入设置。 有关详细信息,请参阅 去交错视频。
字段顺序
交错视频的大多数源(如视频捕获卡)提供包含两个相互交错的字段的视频示例。 结果类似于完整的视频帧,只是奇数线和偶数线在时间上略有移动。 对于交错视频示例中的哪个字段首次出现,没有通用标准。
应允许用户在将交错样本传递给应用程序时指定字段顺序。
编码交错视频
若要使用交错编码,请执行以下步骤:
- 通过调用 IWMStreamConfig2::AddDataUnitExtension 方法,将配置文件中的视频流配置为使用内容类型数据单元扩展。 内容类型扩展的示例扩展 GUID WM_SampleExtensionsGUID_ContentType。
- 在配置文件中设置流,并正常使用配置文件配置编写器。
- 在将交错样本传递给编写器之前,请调用 IWMWriterAdvanced2::SetInputSetting 方法,将g_wszInterlacedCoding输入设置设置为 TRUE。
- 对于传递给编写器的每个交错示例,请调用 INSSBuffer3::SetProperty 方法来设置内容类型。 内容类型值是下表中标志的组合。
标志 | 描述 |
---|---|
WM_CT_INTERLACED | 编码交错内容时,始终设置此标志。 如果使用此标志而不设置字段顺序标志 (WM_CT_BOTTOM_FIELD_FIRST或WM_CT_TOP_FIELD_FIRST) 则编解码器将假定顶部字段是第一个。 如果编解码器使用错误的字段顺序,则不会影响图像质量,但编码效率将受到影响。 |
WM_CT_BOTTOM_FIELD_FIRST | 当与 WM_CT_INTERLACED 标志结合使用时,此标志指示从示例中第二行开始的字段 (底部字段) 首先出现。 |
WM_CT_TOP_FIELD_FIRST | 当与 WM_CT_INTERLACED 标志结合使用时,此标志指示从示例中第一行开始的字段 (顶部字段) 首先出现。 |
WM_CT_REPEAT_FIRST_FIELD | 指示应在播放时重复示例中的第一个字段。 此标志用于通过电视拍摄过程从电影中创建的视频。如果没有与此标志一起设置字段顺序标志,则假定顶部字段在时间上先出现。 |
注意
如果未设置WM_CT_INTERLACED标志,则假定该示例包含渐进式视频帧。
解码交错视频
解码交错视频时,必须使用 IWMReaderAdvanced2::SetOutputSetting 方法将g_wszAllowInterlacedOutput设置设置为 TRUE。 否则,编解码器将提供渐进式帧。
内容类型数据单元扩展在输出示例中维护。 应将字段方向传递给呈现设备,以确保正确播放。