配置媒体源

使用 源解析程序 创建媒体源时,可以指定包含配置属性的属性存储。 这些属性将用于初始化媒体源。 支持的属性集取决于媒体源的实现。 并非每个媒体源都定义配置属性。

下表列出了 Media Foundation 中提供的媒体源的配置属性。 第三方媒体源可以定义其自己的自定义属性。

媒体源 属性
网络源 请参阅 网络源功能
ASF 媒体源

 

若要配置源,请执行以下步骤。

  1. 调用 PSCreateMemoryPropertyStore 以创建新的属性存储。 此函数返回 IPropertyStore 指针。
  2. 调用 IPropertyStore::SetValue 以设置一个或多个配置属性。
  3. 调用源解析程序的创建函数之一,例如 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 指针直接传递到创建源的方案处理程序或字节流处理程序。 源解析程序不会尝试验证属性。

通常,这些属性用于高级设置。 如果未提供属性存储,则媒体源仍应使用默认设置正常运行。

源冲突解决程序