미디어 세션에서 재생 속도를 설정하는 방법

빠른 전달 및 되귀와 같은 재생 기능을 구현하려면 애플리케이션에서 미디어 스트림의 재생 속도를 변경해야 할 수 있습니다. Media Foundation은 애플리케이션이 재생 속도를 동적으로 설정하는 데 사용해야 하는 속도 제어 서비스를 제공합니다.

재생 속도를 설정하기 전에 애플리케이션은 미디어 소스에서 속도를 지원하는지 여부를 검사 합니다. 지원되는 요금을 쿼리하는 방법에 대한 자세한 내용은 지원되는 요금을 확인하는 방법을 참조하세요.

재생 속도에 대한 자세한 내용은 속도 제어 정보를 참조하세요.

재생 속도를 설정하려면

  1. MFGetService를 호출하여 미디어 세션에서 속도 제어 개체를 가져옵니다.

    MFGetService를 호출하는 애플리케이션은 다음을 확인해야 합니다.

    • punkObject 매개 변수에는 초기화된 IMFMediaSession 인터페이스 포인터가 포함되어 있습니다.
    • ppvObject 매개 변수에서 받은 속도 제어 개체는 메모리 누수를 방지하기 위해 해제됩니다.
  2. IMFRateControl::SetRate 메서드를 호출하여 재생 속도를 설정합니다. SetRate가 비동기적으로 완료되면 애플리케이션은 MESessionRateChanged 이벤트를 받습니다.

예제

다음 코드에서는 SetRate 메서드를 호출하여 재생 속도를 설정하는 방법을 보여줍니다.

///////////////////////////////////////////////////////////////////////
//  Name: SetPlaybackRate
//  Description: 
//      Gets the rate control service from Media Session.
//      Sets the playback rate to the specified rate.
//  Parameter:
//      pMediaSession: [in] Media session object to query.
//      rateRequested: [in] Playback rate to set.
//      bThin: [in] Indicates whether to use thinning.
///////////////////////////////////////////////////////////////////////

HRESULT SetPlaybackRate(
          IMFMediaSession *pMediaSession, 
          float rateRequested, 
          BOOL bThin)
{
    HRESULT hr = S_OK;
    IMFRateControl *pRateControl = NULL;

    // Get the rate control object from the Media Session.
    hr = MFGetService( 
           pMediaSession, 
           MF_RATE_CONTROL_SERVICE, 
           IID_IMFRateControl, 
           (void**) &pRateControl ); 

    // Set the playback rate.
    if(SUCCEEDED(hr))
    {
        hr = pRateControl ->SetRate( bThin, rateRequested); 
    }

    // Clean up.
    SAFE_RELEASE(pRateControl );

    return hr;
}

애플리케이션을 중지하거나 일시 중지해야 음수 또는 0 속도에서 양수 속도로 전환할 수 있습니다. 이러한 상태에 대한 자세한 내용은 프레젠테이션 상태를 제어하는 방법을 참조하세요.

미디어 세션

속도 제어

검색, 빠른 전달 및 역방향 플레이