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 |
标头 | mfidl.h |