如何获取播放持续时间
[与本页关联的功能 MFPlay 是一项旧版功能。 它已被 MediaPlayer 和 IMFMediaEngine 取代。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer 和 IMFMediaEngine,而不是 DirectShow。 如果可能,Microsoft 建议应重写使用旧 API 的现有代码,以尽可能地使用新的 API。]
本主题介绍如何使用 MFPlay 获取媒体文件的播放持续时间。
获取播放持续时间
- 调用 IMFPMediaPlayer::CreateMediaItemFromURL 或 IMFPMediaPlayer::CreateMediaItemFromObject 为文件创建媒体项。
- 调用 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。
相关主题