Bagikan melalui


Fungsi MFCreateTranscodeProfile (mfidl.h)

Membuat objek profil transkode kosong.

Profil transkode menyimpan pengaturan konfigurasi untuk file output. Pengaturan konfigurasi ini ditentukan oleh pemanggil, dan menyertakan properti aliran audio dan video, pengaturan encoder, dan pengaturan kontainer. Untuk mengatur properti ini, pemanggil harus memanggil metode IMFTranscodeProfile yang sesuai.

Profil transcode yang dikonfigurasi diteruskan ke fungsi MFCreateTranscodeTopology . Penyusun topologi yang mendasar menggunakan pengaturan ini untuk membangun topologi transkode.

Sintaks

HRESULT MFCreateTranscodeProfile(
  [out] IMFTranscodeProfile **ppTranscodeProfile
);

Parameter

[out] ppTranscodeProfile

Menerima penunjuk ke antarmuka IMFTranscodeProfile dari objek profil transkode. Penelepon harus merilis antarmuka.

Menampilkan nilai

Jika fungsi ini berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.

Keterangan

Fungsi MFCreateTranscodeProfile membuat profil transkode kosong. Anda harus mengonfigurasi atribut pengaturan profil transkode yang menentukan jenis media dan properti kontainer. Gunakan metode berikut untuk mengonfigurasi profil:

Misalnya kode yang menggunakan fungsi ini, lihat topik berikut:

Contoh

Contoh berikut membuat profil transkode untuk Windows Media Audio (WMA).

template <class Q>
HRESULT GetCollectionObject(IMFCollection *pCollection, DWORD index, Q **ppObj)
{
    IUnknown *pUnk;
    HRESULT hr = pCollection->GetElement(index, &pUnk);
    if (SUCCEEDED(hr))
    {
        hr = pUnk->QueryInterface(IID_PPV_ARGS(ppObj));
        pUnk->Release();
    }
    return hr;
}

HRESULT CreateTranscodeProfile(IMFTranscodeProfile **ppProfile)
{
    IMFTranscodeProfile *pProfile = NULL;     // Transcode profile.
    IMFCollection   *pAvailableTypes = NULL;  // List of audio media types.
    IMFMediaType    *pAudioType = NULL;       // Audio media type.
    IMFAttributes   *pAudioAttrs = NULL;      // Copy of the audio media type.
    IMFAttributes   *pContainer = NULL;       // Container attributes.

    DWORD dwMTCount = 0;
    
    // Create an empty transcode profile.
    HRESULT hr = MFCreateTranscodeProfile(&pProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    // Get output media types for the Windows Media audio encoder.

    // Enumerate all codecs except for codecs with field-of-use restrictions.
    // Sort the results.

    DWORD dwFlags = 
        (MFT_ENUM_FLAG_ALL & (~MFT_ENUM_FLAG_FIELDOFUSE)) | 
        MFT_ENUM_FLAG_SORTANDFILTER;

    hr = MFTranscodeGetAudioOutputAvailableTypes(MFAudioFormat_WMAudioV9, 
        dwFlags, NULL, &pAvailableTypes);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pAvailableTypes->GetElementCount(&dwMTCount);
    if (FAILED(hr))
    {
        goto done;
    }
    if (dwMTCount == 0)
    {
        hr = E_FAIL;
        goto done;
    }

    // Get the first audio type in the collection and make a copy.
    hr = GetCollectionObject(pAvailableTypes, 0, &pAudioType);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = MFCreateAttributes(&pAudioAttrs, 0);       
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pAudioType->CopyAllItems(pAudioAttrs);
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the audio attributes on the profile.
    hr = pProfile->SetAudioAttributes(pAudioAttrs);
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the container attributes.
    hr = MFCreateAttributes(&pContainer, 1);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pContainer->SetGUID(MF_TRANSCODE_CONTAINERTYPE, MFTranscodeContainerType_ASF);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pProfile->SetContainerAttributes(pContainer);
    if (FAILED(hr))
    {
        goto done;
    }

    *ppProfile = pProfile;
    (*ppProfile)->AddRef();

done:
    SafeRelease(&pProfile);
    SafeRelease(&pAvailableTypes);
    SafeRelease(&pAudioType);
    SafeRelease(&pAudioAttrs);
    SafeRelease(&pContainer);
    return hr;
}

Persyaratan

   
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
Pustaka Mf.lib
DLL Mf.dll

Lihat juga

IMFTranscodeProfile

MFTranscodeGetAudioOutputAvailableTypes

Fungsi Media Foundation

API Transkode