视频颜色源

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

注意

[已弃用。 此 API 可能会从 Windows 的未来版本中删除。]

 

视频颜色源创建纯色的连续视频图像。

类 ID (CLSID) : {0CFDD070-581A-11D2-9EE6-006008039E37}

CLSID 变量名称: CLSID_ColorSource

属性

属性 类型 默认 说明
“Color” DWORD 0 指定要生成的颜色。 请参阅“备注”。

 

注解

视频颜色源与源对象一起使用。 首先,创建新的源对象。 然后,通过调用 IAMTimelineObj::SetSubObjectGUID 方法,将源对象的子对象 GUID 设置为CLSID_ColorSource。

若要设置颜色,请创建 Property Setter 对象并在零时应用“Color”属性。 此属性的值是格式为 0xAARRGGBB 的十六进制数,其中 AA 是 alpha 值, RR 是红色值, GG 是绿色值, BB 是蓝色值。 Alpha 值的范围从0x00 (透明) 到0xFF (不透明) 。 属性是静态的,必须在零点应用。

如果不指定 alpha 值,则默认为零 (透明) 。 在 32 位彩色视频项目中,这将导致使用 alpha 将视频颜色源呈现为完全透明的过渡或效果。 为安全起码,请始终指定 alpha。 例如,不透明黑色 0xFF000000

下面的代码示例演示如何使用此对象。 有关使用 IPropertySetter 的详细信息,请参阅 设置效果和过渡的属性

DWORD           dwYellow = 0xFFFF00;
IAMTimelineObj  *pSource = NULL;

// Create the source.
HRESULT hr = pTimeline->CreateEmptyNode(&pSource, TIMELINE_MAJOR_TYPE_SOURCE);
if (SUCCEEDED(hr))
{
    hr = pSource->SetStartStop(0, 50000000);
}

if (SUCCEEDED(hr))
{
    hr = pSource->SetSubObjectGUID(CLSID_ColorSource);
}

// Create a property setter.
if (SUCCEEDED(hr))
{
    IPropertySetter *pProp = NULL;
    
    hr = CoCreateInstance(CLSID_PropertySetter, NULL, CLSCTX_INPROC_SERVER, 
        IID_PPV_ARGS(&pProp));

    if SUCCEEDED(hr))
    {
        // Set the color.    
        DEXTER_PARAM param;
        DEXTER_VALUE val;

        param.Name = SysAllocString(OLESTR("Color"));
        param.dispID = 0;
        param.nValues = 1;

        if (param.Name == NULL)
        {
            hr = E_OUTOFMEMORY;
        }
        else
        {
            val.v.vt = VT_I4;
            val.v.lVal = dwYellow;
            val.rt = 0;  // Time must be zero.
            val.dwInterp = DEXTERF_JUMP;

            hr = pProp->AddProp(param, &val);
            
            SysFreeString(param.Name);
        }

        if (SUCCEEDED(hr))
        {
            hr = pSource->SetPropertySetter(pProp); 
        }
        pProp->Release();
    }
}

以下示例显示了在上一示例中创建的 对象的 XML 表示形式。 在这种情况下, param 元素不支持 at线性 元素,因为 对象不支持动态属性:

<clip start="0" stop="5" clsid="{0CFDD070-581A-11D2-9EE6-006008039E37}">
    <param name="Color" value="16776960"/>
</clip>