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 |