IAMTimecodeReader 接口 (strmif.h)

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

IAMTimecodeReader 接口从外部设备读取 SMPTE 或 MIDI 时间代码。 MSDVMSTape 驱动程序支持此接口,用于从外部 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 时会出现错误。 在这种情况下,时间代码源筛选器应仅删除样本,并使用非连续属性标记下一个有效样本。

如果打算使用时间码从时间编码 (或“条带化”) 录像带触发捕获或播放,则事件序列如下所示:

  1. 生成捕获图,打开目标 AVI 文件,并在必要时预分配磁盘空间。 如果捕获的材料将追加到现有的 AVI 文件,请在写入之前查找到文件的末尾。 捕获图此时暂停。
  2. 搜索 VCR 到捕获起点,并记下时间代码。 可以在程序中手动输入此值,或者应用程序可以自动读取该值。 自动读取要求图形正在运行,但文件多路复用器输入引脚上的流控制接口将放弃传入样本,从而有效地控制捕获。
  3. 提示 VCR 预滚动位置,通常在目标点前 5 秒。
  4. 启动 VCR 和图形。 当触发点 (或触发点减去文件编写器的预滚动) 时,流控制接口会释放文件多路复用器,并开始将媒体样本流式传输到文件编写器。
  5. 可以手动停止捕获过程,也可以通过在流控制接口上设置持续时间属性来停止捕获过程。
在预生成期间和捕获过程中,都必须考虑不连续的时间码;可以合理地要求时间代码在整个预滚动和捕获起点中连续且单调递增。 这可以防止 IMediaSeeking::ConvertTimeFormat 方法对相对流时间进行可能不明确的计算。 此外,时间代码不需要是触发捕获的唯一门控信号。 在垂直空白间隔中存储的任何时间戳数据(例如, (XDS) 的互播或隐藏式字幕数据)都可用于开始将视频和音频数据流式传输到磁盘。

硬件要求

有关硬件要求,请参阅 IAMExtTransport 接口。

筛选器开发人员

如果要指定外部设备应如何读取 SMPTE/MIDI 时间代码信息,请在外部设备筛选器上实现此接口。 在筛选器上公开 IMediaSeeking 接口,以便应用程序可以使用 IMediaSeeking::ConvertTimeFormat 方法将时间代码转换为引用时间。

外部设备必须能够读取时间代码,并通过其控制接口将其发送到计算机。 如果不是这样,则必须在计算机中具有时间码读取器卡,或者可以编写一个软件解码器,用于将捕获的视频帧中的 VITC (垂直间隔时间码) 或将作为音频信号捕获的 LTC (线性时间码) 转换为 DirectShow 时间代码示例。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 strmif.h (包括 Dshow.h)

另请参阅

接口