Share via


インデクサーを構成するには

[このページに関連付けられている機能である Windows Media Format 11 SDK は、従来の機能です。 ソース リーダーシンク ライターに置き換わりました。 ソース リーダーシンク ライターは、Windows 10とWindows 11用に最適化されています。 Microsoft では、可能であれば、新しいコードで Windows Media Format 11 SDK ではなくソース リーダーシンク ライターを使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

インデクサーを使用して ASF ファイルのインデックスを作成する前に、インデクサーを構成できます。 ファイル内の各ストリームは個別に構成することも、すべてのストリームに対して同じ構成を設定することもできます。

ファイル内のインデックス作成用に複数の Steam を構成する場合は、それらすべてを構成してから、インデックス作成を開始する必要があります。 ストリームを構成してインデックスを作成し、同じファイル内の別のストリームを構成すると、インデクサーを再度起動すると、最初のインデックスが削除されます。 これは、ASF ファイル形式に準拠するためです。

次のコードは、インデクサーを構成する方法を示しています。 このコードでは、インデックスが作成されるファイルに 2 つのストリームがあることを前提としています。1 つ目は、インデックスを作成する必要のないオーディオ ストリームで、2 つ目はビデオ ストリームです。 このコードでは、インデクサーを構成する方法のみを示します。 ファイルのインデックスを作成するには、「 ASF ファイルのインデックスを作成するには」に記載されている手順に従う必要があります。

IWMIndexer*  pBaseIndexer = NULL;
IWMIndexer2* pMyIndexer   = NULL;

DWORD          dwInterval;
HRESULT hr = S_OK;

// Initialize COM.
hr = CoInitialize(NULL);

// Create an indexer.
hr = WMCreateIndexer(&pBaseIndexer);

// Retrieve an IWMIndexer2 interface pointer for the indexer just created.
hr = pBaseIndexer->QueryInterface(IID_IWMIndexer2, (void**)&pMyIndexer);

// Release the base indexer.
pBaseIndexer->Release();
pBaseIndexer = NULL;

// Set the index interval to 5 frames.
dwInterval = 5;

// Configure the indexer to create a frame-based index.
hr = pMyIndexer->Configure(2,                    // Stream Number.
                           WMT_IT_FRAME_NUMBERS, // Indexer type.
                           (void *)&dwInterval,  // Index interval.
                           NULL;        // Index type, use default.

// TODO: Index the file. See To Index an ASF File.

// Release the remaining interface.
pMyIndexer->Release();
pMyIndexer = NULL;

注意

既定のインデックスの種類はWMT_IT_NEAREST_CLEAN_POINT。 インデックスの種類を他の値に設定することはできますが、これを行うとシークのパフォーマンスが低下します。

 

IWMIndexer2::Configure

ASF ファイルのインデックスを作成するには

WMCreateIndexer

インデックスの使用