재생 기간을 가져오는 방법

[이 페이지와 연결된 기능인 MFPlay는 레거시 기능입니다. 그것은 MediaPlayerIMFMediaEngine에 의해 대체되었습니다. 이러한 기능은 Windows 10 및 Windows 11에 최적화되었습니다. 가능한 경우 새 코드에서 DirectShow 대신 MediaPlayerIMFMediaEngine을 사용하는 것이 좋습니다. 가능한 경우 레거시 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 사용