Compartilhar via


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:

  1. Chame MFCreateTranscodeSinkActivate para criar o objeto de ativação do coletor de transcodificação.
  2. Consulte o objeto de ativação para a interface IMFTranscodeSinkInfoProvider .
  3. Chame MFCreateTranscodeProfile para criar um perfil de transcodificação.
  4. 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
  5. Chame IMFTranscodeProfile::SetVideoAttributes e IMFTranscodeProfile::SetAudioAttributes para especificar os formatos de vídeo e áudio.
  6. Chame IMFTranscodeSinkInfoProvider::SetProfile para definir o perfil de transcodificação.
  7. Chame um dos seguintes métodos (mas não ambos) para especificar o arquivo de saída:
  8. 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

Confira também

MFCreateTranscodeSinkActivate

Media Foundation Interfaces