共用方式為


如何取得播放持續時間

[與此頁面 MFPlay 相關聯的功能是舊版功能。 它已被 MediaPlayerIMFMediaEngine 取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能使用 MediaPlayerIMFMediaEngine,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]

本主題描述如何使用 MFPlay 取得媒體檔案的播放持續時間。

取得播放持續時間

  1. 呼叫 IMFPMediaPlayer::CreateMediaItemFromURLIMFPMediaPlayer::CreateMediaItemFromObject 來建立檔案的媒體專案。
  2. 呼叫 IMFPMediaItem::GetDuration 為第一個參數指定 MFP_POSITIONTYPE_100NS 。 持續時間會以包含LARGE_INTEGER值的 PROPVARIANT 傳回。 持續時間是以 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 進行音訊/視訊播放