IMFPMediaPlayer::SetPosition 方法 (mfplay.h)

重要 废弃。 此 API 可能会从 Windows 的未来版本中删除。 应用程序应使用 媒体会话 进行播放。
 

设置播放位置。

语法

HRESULT SetPosition(
  [in] REFGUID           guidPositionType,
  [in] const PROPVARIANT *pvPositionValue
);

parameters

[in] guidPositionType

播放位置的时间单位。 定义了以下值。

含义
MFP_POSITIONTYPE_100NS
100 纳秒单位。

pvPositionValue 的值必须是LARGE_INTEGER

  • 变量类型 (vt) : VT_I8
  • Variant 成员: hVal

[in] pvPositionValue

新的播放位置。 此参数的含义和数据类型由 guidPositionType 参数指示。

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
方法成功。
E_INVALIDARG
无效的参数。
HRESULT_FROM_WIN32 ( ERROR_SEEK )
pvPositionValue 的值无效。
MF_E_INVALIDREQUEST
没有媒体项已排队。
MF_E_SHUTDOWN
调用了对象的 Shutdown 方法。

注解

如果在停止播放时调用此方法,则新位置将在播放恢复后生效。

此方法异步完成。 操作完成后,将调用应用程序的 IMFPMediaPlayerCallback::OnMediaPlayerEvent 回调方法。 事件类型 为MFP_EVENT_TYPE_POSITION_SET

如果在调用 SetPosition 之前开始播放,则播放将在新位置恢复。 如果暂停播放,则刷新视频以在新位置显示当前帧。

如果连续两次调用 setPosition 且 guidPositionType 等于 MFP_POSITIONTYPE_100NS,并且第二个调用在第一个调用完成之前进行,则第二个调用将取代第一个调用。 被取代的调用的状态代码设置为在该调用的事件数据中 S_FALSE 。 此行为可防止重复调用 SetPosition 时出现过多的延迟,因为每次调用都可能强制媒体源执行相对冗长的查找操作。

要求

   
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows
标头 mfplay.h

另请参阅

IMFPMediaPlayer

使用 MFPlay 播放音频/视频