如何获取播放持续时间

[与本页关联的功能 MFPlay 是一项旧版功能。 它已被 MediaPlayerIMFMediaEngine 取代。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngine,而不是 DirectShow。 如果可能,Microsoft 建议应重写使用旧 API 的现有代码,以尽可能地使用新的 API。]

本主题介绍如何使用 MFPlay 获取媒体文件的播放持续时间。

获取播放持续时间

  1. 调用 IMFPMediaPlayer::CreateMediaItemFromURLIMFPMediaPlayer::CreateMediaItemFromObject 为文件创建媒体项。
  2. 调用 IMFPMediaItem::GetDuration。 为第一个参数指定 MFP_POSITIONTYPE_100NS。 持续时间返回为 PROPVARIANT,其中包含 LARGE_INTEGER 值。 以 100 纳秒为单位提供持续时间。

以下示例显示步骤 2:

#include <propvarutil.h>

HRESULT GetPlaybackDuration(IMFPMediaItem *pItem, ULONGLONG *phnsDuration)
{
    PROPVARIANT var;

    HRESULT hr = pItem->GetDuration(MFP_POSITIONTYPE_100NS, &var);

    if (SUCCEEDED(hr))
    {
        hr = PropVariantToUInt64(var, phnsDuration);
        PropVariantClear(&var);
    }

    return hr;
}

要求

MFPlay 需要 Windows 7。

对音频/视频播放使用 MFPlay