使用同步读取器按 SMPTE 时间代码查找

[与此页面关联的功能 Windows Media Format 11 SDK 是一项旧功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用源读取器和接收器编写器,而不是 Windows Media 格式 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

同步读取器对象可以根据与视频流关联的 SMPTE 时间代码来查找文件中的某个点。 时间代码数据封装在 WMT_TIMECODE_EXTENSION_DATA 结构中,这些结构作为数据单元扩展附加到视频示例。

SMPTE 时间代码由某个范围和该范围内的时间代码定义。 范围是一系列连续的时间代码。 每个时间代码由小时、分钟、秒和帧定义。

若要使用同步读取器通过 SMPTE 时间代码在 ASF 文件中查找数据,请执行以下步骤。

  1. 通过调用 IWMSyncReader::SetRangeByFrame 设置示例传送的开始时间代码和结束时间代码。 必须指定按时间代码编制索引的视频流的流号。 同步读取器会将其余输出同步到指定流的指定帧的呈现时间。
  2. 通过调用 IWMSyncReader::GetNextSample 开始检索示例。 像往常一样使用同步读取器继续操作。

使用同步读取器读取文件

SMPTE 时间代码支持

使用索引