SMPTE 时间代码支持
[与此页面关联的功能 Windows Media Format 11 SDK 是旧版功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用源读取器和接收器编写器,而不是 Windows Media Format 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
Windows 媒体格式 SDK 提供对 SMPTE 时间代码的有限支持,SMPTE 时间代码是电影和电视的标准时间代码格式。 可以将包含示例的 SMPTE 时间代码数据作为数据单元扩展。 扩展的数据部分是包含原始 SMPTE 时间戳信息 WMT_TIMECODE_EXTENSION_DATA 结构。
在 ASF 文件中维护 SMPTE 时间代码具有性能限制。 每个具有关联 SMPTE 时间戳的样本都需要在时间戳结构中传输 14 个字节。 在流式处理方案中,这种增加的带宽要求可能是灾难性的。 因此,建议在视频编辑过程中仅将 SMPTE 时间代码保留在 ASF 文件中,这通常由本地文件完成。 创建最终文件时,应删除数据单元扩展。
可以读取 SMPTE 时间戳,就像读取任何其他数据单元扩展一样,但读取对象提供通过 SMPTE 时间代码进行搜索的集成支持。 若要能够搜索 SMPTE 时间戳,必须先按 SMPTE 时间代码为文件编制索引。 可以使用 IWMIndexer2::Configure 方法将索引器配置为为时间代码编制索引。
使用异步读取器,可以使用 IWMReaderTimecode 接口和 IWMReaderAdvanced3 ::StartAtPosition 方法通过 SMPTE 时间戳导航文件。 对于同步读取器,请使用 IWMSyncReader2::SetRangeByTimecode。