IMFPMediaPlayer::GetPosition 方法 (mfplay.h)

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

获取当前播放位置。

语法

HRESULT GetPosition(
  [in]  REFGUID     guidPositionType,
  [out] PROPVARIANT *pvPositionValue
);

参数

[in] guidPositionType

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

含义
MFP_POSITIONTYPE_100NS
100 纳秒单位。

pvPositionValue 中返回的值是LARGE_INTEGER

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

[out] pvPositionValue

指向接收播放位置的 PROPVARIANT 的指针。

返回值

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

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

注解

播放位置是相对于媒体项的开始时间计算的,可以通过调用 IMFPMediaItem::SetStartStopPosition 进行指定。 例如,如果将开始时间设置为 20 秒,而源持续时间为 60 秒, 则 GetPosition 返回的值范围为 0-40 秒。

示例

以下代码获取当前位置(以 100 纳秒为单位)作为 LONGLONG 值。

HRESULT GetPositionHNS(
    IMFPMediaPlayer *pPlayer, 
    LONGLONG *phnsPosition    // Receives the position in hns.
)
{
    HRESULT hr = S_OK;

    PROPVARIANT var;
    PropVariantInit(&var);

    *phnsPosition = 0;

    hr = pPlayer->GetPosition(MFP_POSITIONTYPE_100NS, &var);

    if (SUCCEEDED(hr))
    {
        *phnsPosition = var.hVal.QuadPart;
    }

    PropVariantClear(&var);
    return hr;
}

要求

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

另请参阅

IMFPMediaPlayer

使用 MFPlay 进行音频/视频播放