次の方法で共有


手順 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 の最初のパラメーターは、IMFAsyncCallback インターフェイスを実装する、CPlayer オブジェクト自体へのポインターです。

イベント処理については、手順 5 で説明します。

次へ: 手順 5: メディア セッション イベントを処理する

オーディオ/ビデオの再生

メディア ファンデーションでメディア ファイルを再生する方法