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 |