파일 클립을 재생 하는 방법How to Play a File Clip

[MFPlay은 요구 사항 섹션에 지정 된 운영 체제에서 사용할 수 있습니다.[MFPlay is available for use in the operating systems specified in the Requirements section. 이후 버전에서는 변경되거나 제공되지 않을 수 있습니다.It may be altered or unavailable in subsequent versions. ]]

이 항목에서는 재생에 대 한 시작 및 중지 시간을 설정 하 여 MFPlay에서 미디어 파일의 세그먼트를 재생 하는 방법에 대해 설명 합니다.This topic describes how to play a segment of a media file in MFPlay, by setting the start and stop times for playback.

파일 클립을 재생 하려면To Play a File Clip

  1. Imfpmediaplayer:: CreateMediaItemFromURL 또는 Imfpmediaplayer:: CreateMediaItemFromObject 를 호출 하 여 파일에 대 한 미디어 항목을 만듭니다.Call IMFPMediaPlayer::CreateMediaItemFromURL or IMFPMediaPlayer::CreateMediaItemFromObject to create a media item for the file.
  2. 필요에 따라 재생 기간을 가져오는 방법에 설명 된 대로 파일의 전체 지속 시간을 가져옵니다.Optionally, get the total duration of the file, as described in How to Get the Playback Duration.
  3. Imfpmediaitem:: SetStartStopPosition 을 호출 하 여 시작 및 중지 시간을 설정 합니다.Call IMFPMediaItem::SetStartStopPosition to set the start and stop times. 중지 시간은 파일 기간을 초과 하면 안 됩니다.The stop time must not exceed the file duration.
  4. Imfpmediaplayer:: SetMediaItem 을 호출 하 여 재생을 시작 합니다.Call IMFPMediaPlayer::SetMediaItem to start playback.

다음 예제에서는 CreateMediaItemFromURL의 차단 버전을 사용 합니다.The following example uses the blocking version of CreateMediaItemFromURL. 비차단 버전이 사용 되는 경우 CreateMediaItemFromURL 다음에 나타나는 코드는 MFP _ 이벤트 _ 유형 _ mediaitem _ CREATED 이벤트에 대 한 처리기에 배치 되어야 합니다.If the non-blocking version is used, the code that appears after CreateMediaItemFromURL should be placed in the handler for the MFP_EVENT_TYPE_MEDIAITEM_CREATED event. MFPlay의 이벤트에 대 한 자세한 내용은 플레이어에서 이벤트 수신을 참조 하세요.For more information about events in MFPlay, see Receiving Events From the Player.

파일 기간을 가져오기 위해이 예제에서는 GetPlaybackDuration 재생 기간을 가져오는 방법항목에 나와 있는 함수를 호출 합니다.To get the file duration, this example calls the GetPlaybackDuration function shown in the topic How to Get the Playback Duration.

HRESULT PlayMediaClip(
    IMFPMediaPlayer *pPlayer,
    PCWSTR pszURL,
    LONGLONG    hnsStart,
    LONGLONG    hnsEnd
    )
{
    IMFPMediaItem *pItem = NULL;
    PROPVARIANT varStart, varEnd;

    ULONGLONG hnsDuration = 0;

    HRESULT hr = pPlayer->CreateMediaItemFromURL(pszURL, TRUE, 0, &pItem);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = GetPlaybackDuration(pItem, &hnsDuration);
    if (FAILED(hr))
    {
        goto done;
    }

    if ((ULONGLONG)hnsEnd > hnsDuration)
    {
        hnsEnd = hnsDuration;
    }

    hr = InitPropVariantFromInt64(hnsStart, &varStart);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = InitPropVariantFromInt64(hnsEnd, &varEnd);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pItem->SetStartStopPosition(
        &MFP_POSITIONTYPE_100NS,
        &varStart,
        &MFP_POSITIONTYPE_100NS,
        &varEnd
        );
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pPlayer->SetMediaItem(pItem);

done:
    SafeRelease(&pItem);
    return hr;
}

요구 사항Requirements

MFPlay에는 Windows 7이 필요 합니다.MFPlay requires Windows 7.

오디오/비디오 재생에 MFPlay 사용Using MFPlay for Audio/Video Playback