次の方法で共有


ビデオカラーソース

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

注意

[非推奨。 この API は、Windows の今後のリリースから削除される可能性があります。

 

ビデオカラーソースは、単色の連続したビデオ画像を作成します。

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

CLSID 変数名: CLSID_ColorSource

プロパティ

プロパティ Type Default 説明
"Color" DWORD 0 生成する色を指定します。 「解説」を参照してください。

 

Remarks

ビデオ カラー ソースは、ソース オブジェクトと共に使用されます。 まず、新しいソース オブジェクトを作成します。 次に、 IAMTimelineObj::SetSubObjectGUID メソッドを呼び出して、ソース オブジェクトのサブオブジェクト GUID をCLSID_ColorSourceに設定します。

色を設定するには、 Property Setter オブジェクトを作成し、時刻 0 に "Color" プロパティを適用します。 このプロパティの値は 0xAARRGGBB という形式の 16 進数です。ここで、 AA はアルファ値、 RR は赤の値、 GG は緑の値、 BB は青の値です。 アルファ値の範囲は、0x00 (透明) から0xFF (不透明) です。 プロパティは静的であり、時刻 0 に適用する必要があります。

アルファ値を指定しない場合、既定値は 0 (透明) になります。 32 ビット カラー ビデオ プロジェクトでは、アルファを使用してビデオ カラー ソースを完全に透明にレンダリングする画面切り替えや効果が発生します。 安全を確保するには、常にアルファを指定します。 たとえば、不透明な黒は 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 要素は、 または 線形要素サポートしていません。これは、 オブジェクトが動的プロパティをサポートしていないためです。

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