MFCreateASFStreamingMediaSink 函数 (wmcontainer.h)

为 ASF 流式处理接收器创建激活对象。

ASF 流式处理接收器使应用程序能够将流式处理高级系统格式 (ASF) 数据包写入 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 源创建媒体接收器。 此示例将流配置设置从源复制到 ContentInfo 对象,该对象表示输出文件的 ASF 标头对象。

//  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
Library Mf.lib
DLL Mf.dll

另请参阅

MFCreateASFStreamingMediaSinkActivate

媒体基础函数