IAMTimelineObj::SetStartStop 方法
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
注意
[已弃用。 此 API 可能会从 Windows 的未来版本中删除。]
方法 SetStartStop
设置相对于对象的父对象的开始和停止时间。
语法
HRESULT SetStartStop(
REFERENCE_TIME Start,
REFERENCE_TIME Stop
);
参数
-
启动
-
新的开始时间(以 100 纳秒为单位)或 –1(保留现有开始时间)。
-
停止
-
新的停止时间(以 100 纳秒为单位)或 –1(保留现有停止时间)。
返回值
返回以下 HRESULT 值之一:
返回代码 | 说明 |
---|---|
|
成功。 |
|
无效的参数。 |
|
未实现。 |
备注
曲目、组合和组不实现此方法。 对于这些对象,开始时间始终为零,停止时间是它们包含的对象的最大停止时间。
不要在同一跟踪中的源对象上设置重叠时间。这样做可能会导致未定义的行为。
对于源对象,开始和停止时间与媒体开始和媒体停止时间无关。 更改一对值不会更改另一对值。 若要设置媒体开始和停止时间,请调用 IAMTimelineSrc::SetMediaTimes 方法。 有关详细信息,请参阅 DirectShow 编辑服务中的时间。
若要获取帧准确的剪切和转换,请将 Start 和 Stop 参数设置为帧边界。 可以使用 IAMTimelineObj::FixTimes 方法将时间值转换为最近的帧边界,或者使用以下函数从帧编号转换为引用时间:
REFERENCE_TIME inline FrameNumToTime(LONGLONG frame, double fps)
{
double dt = (frame * 10000000 / fps);
if (frame >= 0)
{
dt += 0.5; }
else
{
dt -= 0.5;
}
return (REFERENCE_TIME)dt;
}
注意
头文件 Qedit.h 与版本 7 之后的 Direct3D 标头不兼容。
注意
若要获取 Qedit.h,请下载适用于 Windows Vista 和 .NET Framework 3.0 的Microsoft Windows SDK更新。 Qedit.h 在 Windows 7 和 .NET Framework 3.5 Service Pack 1 的Microsoft Windows SDK中不可用。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|
另请参阅