配置索引器

[与此页面关联的功能 Windows Media Format 11 SDK 是一项旧功能。 它已被源读取器和接收器编写器取代。 源读取器和接收器编写器已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用源读取器和接收器编写器,而不是 Windows Media 格式 11 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

可以在使用索引器为 ASF 文件编制索引之前对其进行配置。 可以单独配置文件中的每个流,也可以为所有流设置相同的配置。

如果要为文件中的索引配置多个 steam,则必须全部配置它们,然后开始编制索引。 如果配置并编制流索引,然后在同一文件中配置另一个流,则再次启动索引器将删除第一个索引。 这是为了符合 ASF 文件格式。

以下代码演示如何配置索引器。 该代码假定要编制索引的文件有两个流:第一个流是不需要编制索引的音频流,第二个流是视频流。 此代码仅显示如何配置索引器。 若要为文件编制索引,必须遵循为 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

使用索引