视频颜色源
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media 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>