共用方式為


設定索引子

[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows Media Format 11 SDK。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

您可以使用索引子來編制 ASF 檔案的索引之前,先設定索引子。 檔案中的每個資料流程都可以個別設定,也可以為所有資料流程設定相同的組態。

如果您要在檔案中設定多個串流來編制索引,則必須全部設定它們,然後開始編制索引。 如果您設定並編制資料流程的索引,然後在相同的檔案中設定另一個資料流程,再次啟動索引子將會刪除第一個索引。 這是為了符合 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

使用索引