다음을 통해 공유


MFCreateASFStreamingMediaSink 함수(wmcontainer.h)

ASF 스트리밍 싱크에 대한 활성화 개체를 만듭니다.

ASF 스트리밍 싱크를 사용하면 애플리케이션이 스트리밍 ASF(Advanced Systems Format) 패킷을 HTTP 바이트 스트림에 쓸 수 있습니다.

구문

HRESULT MFCreateASFStreamingMediaSink(
  IMFByteStream *pIByteStream,
  IMFMediaSink  **ppIMediaSink
);

매개 변수

pIByteStream

ASF 미디어 싱크가 스트리밍된 콘텐츠를 쓰는 바이트 스트림 개체에 대한 포인터입니다.

ppIMediaSink

ASF 스트리밍 미디어 싱크 개체의 IMFMediaSink 인터페이스에 대한 포인터를 받습니다. 미디어 싱크를 만들려면 애플리케이션이 받은 포인터에서 IMFActivate::ActivateObject 를 호출해야 합니다. 호출자는 인터페이스 포인터를 해제해야 합니다.

반환 값

이 함수가 성공하면 S_OK 반환합니다. 그러지 않으면 HRESULT 오류 코드를 반환합니다.

설명

다른 프로세스에서 ASF 스트리밍 싱크를 만들려면 MFCreateASFStreamingMediaSinkActivate를 호출합니다.

애플리케이션은 ppIMediaSink 매개 변수에서 받은 미디어 싱크 개체에서 IUnknown::QueryInterface를 호출하여 ASF ContentInfo 개체에 대한 포인터를 가져올 수 있습니다. ContentInfo 개체는 인코더 구성 설정을 설정하고, ASF 프로필에서 제공하는 스트림 속성을 제공하고, 메타데이터 정보를 추가하는 데 사용됩니다. 이러한 구성 설정은 인코딩된 ASF 파일의 다양한 ASF 헤더 개체를 채웁니다. 자세한 내용은
ContentInfo 개체의 속성 설정

예제

다음 코드 예제에서는 ASF 원본에 대 한 미디어 싱크를 만드는 방법을 보여 있습니다. 다음은 원본에서 출력 파일의 ASF 헤더 개체를 나타내는 ContentInfo 개체로 스트림 구성 설정을 복사하는 예제입니다.

//  Creates an an instance of the ASF streaming sink.

HRESULT CreateASFStreamingSink(
    IMFMediaSource *pSource, 
    IMFByteStream  *pOutputByteStream, 
    IMFMediaSink   **ppMediaSink
    )
{
    IMFPresentationDescriptor* pSourcePD = NULL;
    IMFASFProfile* pASFProfile = NULL;;
    IMFMediaSink* pMediaSink = NULL;
    IMFASFContentInfo* pASFContentInfo = NULL;

    // Create the streaming media sink for the ASF file
    HRESULT hr = MFCreateASFStreamingMediaSink(pOutputByteStream, &pMediaSink);
    if (FAILED(hr))
    {
        goto done;
    }

    //
    // Transfer the ASF profile from the media source to the sink.
    //

    // Get the presentation descriptor from the source.
    hr = pSource->CreatePresentationDescriptor(&pSourcePD);
    if (FAILED(hr))
    {
        goto done;
    }

    // Convert the presentation descriptor to an ASF profile.
    hr = MFCreateASFProfileFromPresentationDescriptor(pSourcePD, &pASFProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pMediaSink->QueryInterface(IID_PPV_ARGS(&pASFContentInfo));
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the profile on the sink.
    hr = pASFContentInfo->SetProfile(pASFProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    *ppMediaSink = pMediaSink;
    (*ppMediaSink)->AddRef();

done:
    SafeRelease(&pSourcePD);
    SafeRelease(&pASFProfile);
    SafeRelease(&pASFContentInfo);
    SafeRelease(&pMediaSink);
    return hr;
}

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 wmcontainer.h
라이브러리 Mf.lib
DLL Mf.dll

추가 정보

MFCreateASFStreamingMediaSinkActivate

미디어 파운데이션 함수