IAMTimecodeReader 接口 (strmif.h)
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
IAMTimecodeReader 接口从外部设备读取 SMPTE 或 MIDI 时间代码。 MSDV 和 MSTape 驱动程序支持此接口,用于从外部 DV 或 MPEG-2 摄像机读取时间代码。
继承
IAMTimecodeReader 接口继承自 IUnknown 接口。 IAMTimecodeReader 还具有以下类型的成员:
方法
IAMTimecodeReader 接口具有这些方法。
IAMTimecodeReader::get_VITCLine get_VITCLine 方法检索时间码读取器用于读取时间码的垂直间隔线。 |
IAMTimecodeReader::GetTCRMode GetTCRMode 方法检索时间代码读取器的属性。 |
IAMTimecodeReader::GetTimecode GetTimecode 方法检索流中可用的最新时间码、userbit 和标志值。 |
IAMTimecodeReader::p ut_VITCLine put_VITCLine 方法指定时间码读取器用于读取时间码的垂直间隔线。 |
IAMTimecodeReader::SetTCRMode SetTCRMode 方法设置时间码读取器属性。 |
注解
对于 Windows 驱动程序模型 (WDM) 设备,如果 WDM 驱动程序支持PROPSETID_TIMECODE_READER属性集,WDM 视频捕获筛选器 会自动公开此接口。 有关详细信息,请参阅 Windows 驱动程序工具包 (WDK) 文档。
SMPTE 时间代码是一种帧寻址系统,用于标识视频和音频源,实现自动跟踪同步,并为与源材料相关的其他数据提供容器。 SMPTE 时间代码main目的是为视频和音频提供计算机可读地址。 它以 hh:mm:ss:ff (小时、分钟、秒、帧) 格式显示,并在 ANSI/SMPTE 12-1986 中进行了全面定义。
应用程序通常通过以下两种方式之一来节省时间代码。 它要么作为附加流写入捕获文件,要么作为扩展 AVI 文件索引中存储的不连续表写入捕获文件。 它通常用于触发捕获或播放,以及创建描述源材料如何组织成成品的编辑决策列表。
如果打算捕获时间代码,请将其视为具有其自己的媒体类型的单独流。 它可由适当的文件写入多路复用器筛选器使用。 但是,有时,由于丢弃和其他机械磁带问题,在读取磁带上的 timecode 时会出现错误。 在这种情况下,时间代码源筛选器应仅删除样本,并使用非连续属性标记下一个有效样本。
如果打算使用时间码从时间编码 (或“条带化”) 录像带触发捕获或播放,则事件序列如下所示:
- 生成捕获图,打开目标 AVI 文件,并在必要时预分配磁盘空间。 如果捕获的材料将追加到现有的 AVI 文件,请在写入之前查找到文件的末尾。 捕获图此时暂停。
- 搜索 VCR 到捕获起点,并记下时间代码。 可以在程序中手动输入此值,或者应用程序可以自动读取该值。 自动读取要求图形正在运行,但文件多路复用器输入引脚上的流控制接口将放弃传入样本,从而有效地控制捕获。
- 提示 VCR 预滚动位置,通常在目标点前 5 秒。
- 启动 VCR 和图形。 当触发点 (或触发点减去文件编写器的预滚动) 时,流控制接口会释放文件多路复用器,并开始将媒体样本流式传输到文件编写器。
- 可以手动停止捕获过程,也可以通过在流控制接口上设置持续时间属性来停止捕获过程。
硬件要求
有关硬件要求,请参阅 IAMExtTransport 接口。筛选器开发人员
如果要指定外部设备应如何读取 SMPTE/MIDI 时间代码信息,请在外部设备筛选器上实现此接口。 在筛选器上公开 IMediaSeeking 接口,以便应用程序可以使用 IMediaSeeking::ConvertTimeFormat 方法将时间代码转换为引用时间。外部设备必须能够读取时间代码,并通过其控制接口将其发送到计算机。 如果不是这样,则必须在计算机中具有时间码读取器卡,或者可以编写一个软件解码器,用于将捕获的视频帧中的 VITC (垂直间隔时间码) 或将作为音频信号捕获的 LTC (线性时间码) 转换为 DirectShow 时间代码示例。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | strmif.h (包括 Dshow.h) |