Интерфейс IMFTranscodeSinkInfoProvider (mfidl.h)
Реализуется объектом активации приемника перекодирования.
Объект активации приемника перекодирования можно использовать для создания любого из следующих приемников файлов:
- Приемник файлов 3GP
- Приемник MP3-файлов
- Приемник MP4-файлов
Наследование
Интерфейс IMFTranscodeSinkInfoProvider наследуется от интерфейса IUnknown . IMFTranscodeSinkInfoProvider также имеет следующие типы членов:
Методы
Интерфейс IMFTranscodeSinkInfoProvider содержит следующие методы.
IMFTranscodeSinkInfoProvider::GetSinkInfo Возвращает типы мультимедиа для аудио- и видеопотоков, указанных в профиле перекодирования. |
IMFTranscodeSinkInfoProvider::SetOutputByteStream Задает выходной байтовый поток для приемника мультимедиа перекодировки. |
IMFTranscodeSinkInfoProvider::SetOutputFile Задает имя закодированного выходного файла. |
IMFTranscodeSinkInfoProvider::SetProfile Задает профиль перекодирования для объекта активации приемника перекодировки. |
Комментарии
Чтобы использовать этот интерфейс, выполните следующие действия.
- Вызовите MFCreateTranscodeSinkActivate , чтобы создать объект активации приемника перекодирования.
- Запросите объект активации для интерфейса IMFTranscodeSinkInfoProvider .
- Вызовите MFCreateTranscodeProfile , чтобы создать профиль перекодирования.
- Задайте атрибут MF_TRANSCODE_CONTAINERTYPE для профиля перекодирования. Атрибут должен иметь одно из следующих значений:
- MFTranscodeContainerType_3GP
- MFTranscodeContainerType_MP3
- MFTranscodeContainerType_MPEG4
- Вызовите IMFTranscodeProfile::SetVideoAttributes и IMFTranscodeProfile::SetAudioAttributes , чтобы указать форматы видео и звука.
- Вызовите IMFTranscodeSinkInfoProvider::SetProfile , чтобы задать профиль перекодирования.
- Вызовите один из следующих методов (но не оба), чтобы указать выходной файл:
- Вызовите 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 |