Поделиться через


Интерфейс IMFTranscodeSinkInfoProvider (mfidl.h)

Реализуется объектом активации приемника перекодирования.

Объект активации приемника перекодирования можно использовать для создания любого из следующих приемников файлов:

  • Приемник файлов 3GP
  • Приемник MP3-файлов
  • Приемник MP4-файлов

Наследование

Интерфейс IMFTranscodeSinkInfoProvider наследуется от интерфейса IUnknown . IMFTranscodeSinkInfoProvider также имеет следующие типы членов:

Методы

Интерфейс IMFTranscodeSinkInfoProvider содержит следующие методы.

 
IMFTranscodeSinkInfoProvider::GetSinkInfo

Возвращает типы мультимедиа для аудио- и видеопотоков, указанных в профиле перекодирования.
IMFTranscodeSinkInfoProvider::SetOutputByteStream

Задает выходной байтовый поток для приемника мультимедиа перекодировки.
IMFTranscodeSinkInfoProvider::SetOutputFile

Задает имя закодированного выходного файла.
IMFTranscodeSinkInfoProvider::SetProfile

Задает профиль перекодирования для объекта активации приемника перекодировки.

Комментарии

Чтобы использовать этот интерфейс, выполните следующие действия.

  1. Вызовите MFCreateTranscodeSinkActivate , чтобы создать объект активации приемника перекодирования.
  2. Запросите объект активации для интерфейса IMFTranscodeSinkInfoProvider .
  3. Вызовите MFCreateTranscodeProfile , чтобы создать профиль перекодирования.
  4. Задайте атрибут MF_TRANSCODE_CONTAINERTYPE для профиля перекодирования. Атрибут должен иметь одно из следующих значений:
    • MFTranscodeContainerType_3GP
    • MFTranscodeContainerType_MP3
    • MFTranscodeContainerType_MPEG4
  5. Вызовите IMFTranscodeProfile::SetVideoAttributes и IMFTranscodeProfile::SetAudioAttributes , чтобы указать форматы видео и звука.
  6. Вызовите IMFTranscodeSinkInfoProvider::SetProfile , чтобы задать профиль перекодирования.
  7. Вызовите один из следующих методов (но не оба), чтобы указать выходной файл:
  8. Вызовите IMFActivate::ActivateObject в объекте активации, чтобы создать приемник мультимедиа.

Примеры

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

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header mfidl.h

См. также раздел

MFCreateTranscodeSinkActivate

Интерфейсы Media Foundation