次の方法で共有


再生時間を取得する方法

[このページに関連付けられている機能である MFPlay はレガシ機能です。 これは MediaPlayer および IMFMediaEngine に置き換えられました。 これらの機能は、Windows 10 および Windows 11 用に最適化されています。 Microsoftでは、新しいコードで可能な限り DirectShow ではなく MediaPlayerIMFMediaEngine を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存コードを、新しい API を使用するように可能であれば書き直すことを提案しています。]

このトピックでは、MFPlay を使用してメディア ファイルの再生時間を取得する方法について説明します。

再生時間を取得するには

  1. IMFPMediaPlayer::CreateMediaItemFromURL または IMFPMediaPlayer::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 を使用する