Interface IMFTranscodeSinkInfoProvider (mfidl.h)
Implementado pelo objeto de ativação do coletor de transcodificação.
O objeto de ativação do coletor de transcodificação pode ser usado para criar qualquer um dos seguintes coletores de arquivo:
- Coletor de arquivos 3GP
- Coletor de arquivos MP3
- Coletor de arquivos MP4
Herança
A interface IMFTranscodeSinkInfoProvider herda da interface IUnknown . IMFTranscodeSinkInfoProvider também tem esses tipos de membros:
Métodos
A interface IMFTranscodeSinkInfoProvider tem esses métodos.
IMFTranscodeSinkInfoProvider::GetSinkInfo Obtém os tipos de mídia para os fluxos de áudio e vídeo especificados no perfil de transcodificação. |
IMFTranscodeSinkInfoProvider::SetOutputByteStream Define um fluxo de bytes de saída para o coletor de mídia de transcodificação. |
IMFTranscodeSinkInfoProvider::SetOutputFile Define o nome do arquivo de saída codificado. |
IMFTranscodeSinkInfoProvider::SetProfile Define o perfil de transcodificação no objeto de ativação do coletor de transcodificação. |
Comentários
Para usar essa interface, execute as seguintes etapas:
- Chame MFCreateTranscodeSinkActivate para criar o objeto de ativação do coletor de transcodificação.
- Consulte o objeto de ativação para a interface IMFTranscodeSinkInfoProvider .
- Chame MFCreateTranscodeProfile para criar um perfil de transcodificação.
- Defina o atributo MF_TRANSCODE_CONTAINERTYPE no perfil de transcodificação. O atributo deve ter um dos seguintes valores:
- MFTranscodeContainerType_3GP
- MFTranscodeContainerType_MP3
- MFTranscodeContainerType_MPEG4
- Chame IMFTranscodeProfile::SetVideoAttributes e IMFTranscodeProfile::SetAudioAttributes para especificar os formatos de vídeo e áudio.
- Chame IMFTranscodeSinkInfoProvider::SetProfile para definir o perfil de transcodificação.
- Chame um dos seguintes métodos (mas não ambos) para especificar o arquivo de saída:
- Chame IMFActivate::ActivateObject no objeto de ativação para criar o coletor de mídia.
Exemplos
// Creates an activation object for the generic transcode sink.
HRESULT CreateTranscodeSinkActivate(
REFGUID guidContainerType,
IMFAttributes *pVideoAttributes,
IMFAttributes *pAudioAttributes,
IMFActivate *pByteStreamActivate,
IMFActivate **ppSinkActivate
)
{
IMFActivate* pSinkActivate = NULL;
IMFTranscodeSinkInfoProvider* pSinkInfoProvider = NULL;
IMFTranscodeProfile* pProfile = NULL;
IMFAttributes* pContainerAttributes = NULL;
HRESULT hr = MFCreateAttributes(&pContainerAttributes, 1);
if (FAILED(hr))
{
goto done;
}
// Create the transcode profile.
hr = MFCreateTranscodeProfile(&pProfile);
if (FAILED(hr))
{
goto done;
}
// Set the profile attributes.
hr = pContainerAttributes->SetGUID(MF_TRANSCODE_CONTAINERTYPE, guidContainerType);
if (FAILED(hr))
{
goto done;
}
hr = pProfile->SetContainerAttributes(pContainerAttributes);
if (FAILED(hr))
{
goto done;
}
if (pVideoAttributes)
{
hr = pProfile->SetVideoAttributes(pVideoAttributes);
if (FAILED(hr))
{
goto done;
}
}
if (pAudioAttributes)
{
hr = pProfile->SetAudioAttributes(pAudioAttributes);
if (FAILED(hr))
{
goto done;
}
}
// Create the transcode sink activation object.
hr = MFCreateTranscodeSinkActivate(&pSinkActivate);
if (FAILED(hr))
{
goto done;
}
hr = pSinkActivate->QueryInterface(IID_PPV_ARGS(&pSinkInfoProvider));
if (FAILED(hr))
{
goto done;
}
// Set the output byte stream.
hr = pSinkInfoProvider->SetOutputByteStream(pByteStreamActivate);
if (FAILED(hr))
{
goto done;
}
// Set the transcode profile.
hr = pSinkInfoProvider->SetProfile(pProfile);
if (FAILED(hr))
{
goto done;
}
// Return the activation object to the caller.
*ppSinkActivate = pSinkActivate;
(*ppSinkActivate)->AddRef();
done:
SafeRelease(&pProfile);
SafeRelease(&pSinkInfoProvider);
SafeRelease(&pSinkActivate);
SafeRelease(&pContainerAttributes);
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 | mfidl.h |