Condividi tramite


Interfaccia IMFTranscodeSinkInfoProvider (mfidl.h)

Implementato dall'oggetto di attivazione sink transcodifica.

L'oggetto di attivazione sink transcodifica può essere usato per creare uno dei sink di file seguenti:

  • Sink di file 3GP
  • Sink di file MP3
  • Sink di file MP4

Ereditarietà

L'interfaccia IMFTranscodeSinkInfoProvider eredita dall'interfaccia IUnknown . IMFTranscodeSinkInfoProvider include anche questi tipi di membri:

Metodi

L'interfaccia IMFTranscodeSinkInfoProvider include questi metodi.

 
IMFTranscodeSinkInfoProvider::GetSinkInfo

Ottiene i tipi di supporti per i flussi audio e video specificati nel profilo di transcodifica.
IMFTranscodeSinkInfoProvider::SetOutputByteStream

Imposta un flusso di byte di output per il sink multimediale transcodifica.
IMFTranscodeSinkInfoProvider::SetOutputFile

Imposta il nome del file di output codificato.
IMFTranscodeSinkInfoProvider::SetProfile

Imposta il profilo di transcodifica nell'oggetto attivazione sink transcodifica.

Commenti

Per usare questa interfaccia, seguire questa procedura:

  1. Chiamare MFCreateTranscodeSinkActivate per creare l'oggetto di attivazione sink transcodifica.
  2. Eseguire una query sull'oggetto attivazione per l'interfaccia IMFTranscodeSinkInfoProvider .
  3. Chiamare MFCreateTranscodeProfile per creare un profilo transcodifica.
  4. Impostare l'attributo MF_TRANSCODE_CONTAINERTYPE nel profilo transcodifica. L'attributo deve avere uno dei valori seguenti:
    • MFTranscodeContainerType_3GP
    • MFTranscodeContainerType_MP3
    • MFTranscodeContainerType_MPEG4
  5. Chiama IMFTranscodeProfile::SetVideoAttributes e IMFTranscodeProfile::SetAudioAttributes per specificare i formati video e audio.
  6. Chiamare IMFTranscodeSinkInfoProvider::SetProfile per impostare il profilo transcodifica.
  7. Chiamare uno dei metodi seguenti (ma non entrambi) per specificare il file di output:
  8. Chiamare IMFActivate::ActivateObject sull'oggetto attivazione per creare il sink multimediale.

Esempio

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

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione mfidl.h

Vedi anche

MFCreateTranscodeSinkActivate

Interfacce di Media Foundation