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

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

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

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

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

  1. 通过调用 IWMReader::QueryInterface 获取指向读取器对象的 IWMReaderAdvanced3 接口的指针。
  2. 通过调用 IWMReaderAdvanced3::StartAtPosition 设置开始时间代码和持续时间。 必须指定按时间代码编制索引的视频流的流号。 读取器会将其余输出同步到指定流的指定帧的呈现时间,并开始传送输出样本。
  3. 像在 实现 IWMReaderCallback::OnSample 方法时一样处理示例。

使用异步读取器读取文件

使用索引

SMPTE 时间代码支持