Compartilhar via


Função MFCreateASFStreamingMediaSink (wmcontainer.h)

Cria um objeto de ativação para o coletor de streaming do ASF.

O coletor de streaming ASF permite que um aplicativo escreva pacotes ASF (Formato de Sistemas Avançados) de streaming em um fluxo de bytes HTTP.

Sintaxe

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

Parâmetros

pIByteStream

Um ponteiro para um objeto de fluxo de bytes no qual o coletor de mídia ASF grava o conteúdo transmitido.

ppIMediaSink

Recebe um ponteiro para a interface IMFMediaSink do objeto coletor de mídia de streaming do ASF. Para criar o coletor de mídia, o aplicativo deve chamar IMFActivate::ActivateObject no ponteiro recebido. O chamador deve liberar o ponteiro da interface.

Retornar valor

Se essa função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.

Comentários

Para criar o coletor de streaming ASF em outro processo, chame MFCreateASFStreamingMediaSinkActivate.

Um aplicativo pode obter um ponteiro para o Objeto ContentInfo do ASF chamando IUnknown::QueryInterface no objeto coletor de mídia recebido no parâmetro ppIMediaSink . O objeto ContentInfo é usado para definir as configurações do codificador, fornecer propriedades de fluxo fornecidas por um perfil ASF e adicionar informações de metadados. Essas configurações preenchem os vários objetos de cabeçalho ASF do arquivo ASF codificado. Para obter mais informações, consulte
Definindo propriedades no objeto ContentInfo.

Exemplos

O exemplo de código a seguir mostra como criar um coletor de mídia para uma fonte ASF. Este exemplo copia as configurações de fluxo da origem para o objeto ContentInfo que representa o objeto de cabeçalho ASF do arquivo de saída.

//  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;
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wmcontainer.h
Biblioteca Mf.lib
DLL Mf.dll

Confira também

MFCreateASFStreamingMediaSinkActivate

Funções do Media Foundation