Share via


步驟 4:建立媒體會話

本主題是如何使用媒體基礎 播放媒體檔案教學 課程的步驟 4。 完整的程式碼會顯示在媒體會話播放範例 主題 中。

CPlayer::CreateSession 建立媒體會話的新實例。

//  Create a new instance of the media session.
HRESULT CPlayer::CreateSession()
{
    // Close the old session, if any.
    HRESULT hr = CloseSession();
    if (FAILED(hr))
    {
        goto done;
    }

    assert(m_state == Closed);

    // Create the media session.
    hr = MFCreateMediaSession(NULL, &m_pSession);
    if (FAILED(hr))
    {
        goto done;
    }

    // Start pulling events from the media session
    hr = m_pSession->BeginGetEvent((IMFAsyncCallback*)this, NULL);
    if (FAILED(hr))
    {
        goto done;
    }

    m_state = Ready;

done:
    return hr;
}

此方法會執行下列步驟:

  1. 呼叫 CPlayer::CloseSession 以關閉任何先前的媒體會話實例。
  2. 呼叫 MFCreateMediaSession 以建立媒體會話的新實例。
  3. 呼叫 IMFMediaEventGenerator::BeginGetEvent 方法,從媒體會話要求下一個事件。 BeginGetEvent 的第一個參數 是 CPlayer 物件本身的 指標,它會實作 IMFAsyncCallback 介面。

步驟 5 會說明事件處理。

下一步: 步驟 5:處理媒體會話事件

音訊/視訊播放

如何使用媒體基礎播放媒體檔案