Condividi tramite


Per configurare l'indicizzatore

[La funzionalità associata a questa pagina, Windows Media Format 11 SDK, è una funzionalità legacy. È stata sostituita dal Lettore di Origine e dallo Scrittore di Destinazione . Source Reader e Sink Writer sono stati ottimizzati per Windows 10 e Windows 11. Microsoft consiglia vivamente di utilizzare Source Reader e Sink Writer nel nuovo codice, invece di Windows Media Format 11 SDKquando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

È possibile configurare l'indicizzatore prima di usarlo per indicizzare un file ASF. Ogni flusso nel file può essere configurato separatamente oppure è possibile impostare la stessa configurazione per tutti i flussi.

Se si configurano più flussi per l'indicizzazione in un file, è necessario configurarli tutti prima di avviare l'indicizzazione. Se si configura e indicizza un flusso e quindi si configura un altro flusso nello stesso file, l'avvio dell'indicizzatore eliminerà di nuovo il primo indice. Questo è conforme al formato di file ASF.

Il codice seguente illustra come configurare l'indicizzatore. Il codice presuppone che il file da indicizzare abbia due flussi: il primo è un flusso audio che non deve essere indicizzato e il secondo è un flusso video. Questo codice mostra solo come configurare l'indicizzatore. Per indicizzare un file, è necessario seguire i passaggi presentati in Per indicizzare un file 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;

Nota

Il tipo di indice predefinito è WMT_IT_NEAREST_CLEAN_POINT. Anche se è possibile impostare il tipo di indice su altri valori, farlo ridurrà le prestazioni di ricerca.

 

IWMIndexer2::Configure

Per indicizzare un file ASF

WMCreateIndexer

Utilizzo degli indici