Bagikan melalui


Antarmuka IMFTranscodeSinkInfoProvider (mfidl.h)

Diimplementasikan oleh objek aktivasi sink transcode.

Objek aktivasi sink transkode dapat digunakan untuk membuat salah satu sink file berikut:

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

Warisan

Antarmuka IMFTranscodeSinkInfoProvider mewarisi dari antarmuka IUnknown . IMFTranscodeSinkInfoProvider juga memiliki jenis anggota berikut:

Metode

Antarmuka IMFTranscodeSinkInfoProvider memiliki metode ini.

 
IMFTranscodeSinkInfoProvider::GetSinkInfo

Mendapatkan jenis media untuk aliran audio dan video yang ditentukan dalam profil transkode.
IMFTranscodeSinkInfoProvider::SetOutputByteStream

Mengatur aliran byte output untuk sink media transkode.
IMFTranscodeSinkInfoProvider::SetOutputFile

Mengatur nama file output yang dikodekan.
IMFTranscodeSinkInfoProvider::SetProfile

Mengatur profil transkode pada objek aktivasi sink transkode.

Keterangan

Untuk menggunakan antarmuka ini, lakukan langkah-langkah berikut:

  1. Panggil MFCreateTranscodeSinkActivate untuk membuat objek aktivasi sink transcode.
  2. Kueri objek aktivasi untuk antarmuka IMFTranscodeSinkInfoProvider .
  3. Panggil MFCreateTranscodeProfile untuk membuat profil transkode.
  4. Atur atribut MF_TRANSCODE_CONTAINERTYPE pada profil transcode. Atribut harus memiliki salah satu nilai berikut:
    • MFTranscodeContainerType_3GP
    • MFTranscodeContainerType_MP3
    • MFTranscodeContainerType_MPEG4
  5. Panggil IMFTranscodeProfile::SetVideoAttributes dan IMFTranscodeProfile::SetAudioAttributes untuk menentukan format video dan audio.
  6. Panggil IMFTranscodeSinkInfoProvider::SetProfile untuk mengatur profil transkode.
  7. Panggil salah satu metode berikut (tetapi tidak keduanya) untuk menentukan file output:
  8. Panggil IMFActivate::ActivateObject pada objek aktivasi untuk membuat sink media.

Contoh

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 R2 [hanya aplikasi desktop]
Target Platform Windows
Header mfidl.h

Lihat juga

MFCreateTranscodeSinkActivate

Antarmuka Media Foundation