再生時間を取得する方法
[このページに関連付けられている機能である MFPlay はレガシ機能です。 これは MediaPlayer および IMFMediaEngine に置き換えられました。 これらの機能は、Windows 10 および Windows 11 用に最適化されています。 Microsoftでは、新しいコードで可能な限り DirectShow ではなく MediaPlayer と IMFMediaEngine を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存コードを、新しい API を使用するように可能であれば書き直すことを提案しています。]
このトピックでは、MFPlay を使用してメディア ファイルの再生時間を取得する方法について説明します。
再生時間を取得するには
- IMFPMediaPlayer::CreateMediaItemFromURL または IMFPMediaPlayer::CreateMediaItemFromObject を呼び出して、ファイルのメディア項目を作成します。
- 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 が必要です。
関連トピック