配置媒体源
使用 源解析程序 创建媒体源时,可以指定包含配置属性的属性存储。 这些属性将用于初始化媒体源。 支持的属性集取决于媒体源的实现。 并非每个媒体源都定义配置属性。
下表列出了 Media Foundation 中提供的媒体源的配置属性。 第三方媒体源可以定义其自己的自定义属性。
媒体源 | 属性 |
---|---|
网络源 | 请参阅 网络源功能。 |
ASF 媒体源 |
若要配置源,请执行以下步骤。
- 调用 PSCreateMemoryPropertyStore 以创建新的属性存储。 此函数返回 IPropertyStore 指针。
- 调用 IPropertyStore::SetValue 以设置一个或多个配置属性。
- 调用源解析程序的创建函数之一,例如 IMFSourceResolver::CreateObjectFromURL,并在 pProps 参数中传递 IPropertyStore 指针。
// Creates a media source from a URL.
HRESULT CreateMediaSource(
PCWSTR pszURL,
IPropertyStore *pConfig, // Optional, can be NULL
IMFMediaSource **ppSource
)
{
IMFSourceResolver* pSourceResolver = NULL;
IUnknown* pSource = NULL;
// Create the source resolver.
HRESULT hr = MFCreateSourceResolver(&pSourceResolver);
// Use the source resolver to create the media source.
if (SUCCEEDED(hr))
{
MF_OBJECT_TYPE ObjectType;
DbgLog(L"CreateObjectFromURL");
hr = pSourceResolver->CreateObjectFromURL(
pszURL,
MF_RESOLUTION_MEDIASOURCE, // Create a media source.
pConfig, // Configuration properties.
&ObjectType, // Receives the object type.
&pSource
);
DbgLog(L"CreateObjectFromURL - FINISHED");
}
if (SUCCEEDED(hr))
{
hr = pSource->QueryInterface(IID_PPV_ARGS(ppSource));
}
SafeRelease(&pSourceResolver);
SafeRelease(&pSource);
return hr;
}
源解析程序将 IPropertyStore 指针直接传递到创建源的方案处理程序或字节流处理程序。 源解析程序不会尝试验证属性。
通常,这些属性用于高级设置。 如果未提供属性存储,则媒体源仍应使用默认设置正常运行。
相关主题