미디어 세션에서 재생 속도를 설정하는 방법
빠른 전달 및 되감기와 같은 재생 기능을 구현하려면 애플리케이션에서 미디어 스트림의 재생 속도를 변경해야 할 수 있습니다. Media Foundation은 애플리케이션이 재생 속도를 동적으로 설정하는 데 사용해야 하는 속도 제어 서비스를 제공합니다.
재생 속도를 설정하기 전에 애플리케이션은 미디어 소스에서 속도를 지원하는지 확인해야 합니다. 지원되는 요금 쿼리에 대한 자세한 내용은 지원되는 요금확인하는 방법을 참조하세요.
재생 속도에 대한 정보는 비율 제어에 대한 정보를 참조하세요.
재생 속도를 설정하려면
MFGetService 호출하여 미디어 세션에서 속도 제어 개체를 가져옵니다.
MFGetService 호출하는 애플리케이션은 다음을 확인해야 합니다.
- punkObject 매개 변수에는 초기화된 IMFMediaSession 인터페이스 포인터가 포함되어 있습니다.
- 메모리 누수를 방지하기 위해 ppvObject 매개 변수에서 수신된 속도 제어 개체가 해제됩니다.
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 속도에서 양수로 전환할 수 있습니다. 이러한 상태에 대한 자세한 내용은 프레젠테이션 상태제어하는 방법을 참조하세요.
관련 항목