다음을 통해 공유


4단계: 미디어 세션 만들기

이 항목은 Media Foundation을 사용하여 미디어 파일을 재생하는 방법 자습서의 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단계: 미디어 세션 이벤트 처리

오디오/비디오 재생

Media Foundation을 사용하여 미디어 파일을 재생하는 방법