共用方式為


如何在媒體會話上設定播放速率

若要實作快速轉送和倒轉等播放功能,應用程式可能需要變更媒體資料流程的播放速率。 媒體基礎提供應用程式必須用來動態設定播放速率的速率控制服務。

設定播放速率之前,應用程式應該檢查媒體來源是否支援速率。 如需查詢支援速率的相關資訊,請參閱 如何判斷支援的速率

如需播放速率的相關資訊,請參閱 關於速率控制

設定播放速率

  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;
}

應用程式必須先停止或暫停,才能從負率或零率轉換為正率。 如需這些狀態的相關資訊,請參閱 如何控制簡報狀態

媒體會話

速率控制

搜尋、快速向前和反向播放