Per forzare l'inserimento di Key-Frame
[La funzionalità associata a questa pagina, Windows Media Format 11 SDK, è una funzionalità legacy. È stata sostituita da Source Reader e Sink Writer. Lettore di origine e Sink Writer sono stati ottimizzati per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi lettore di origine e writer sink invece di Windows Media Format 11 SDK, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Il codec Windows Media Video 9 supporta l'inserimento forzato di fotogrammi chiave. Quando si passa un esempio allo scrittore, è possibile specificare che deve essere codificato come fotogramma chiave .
Per forzare l'inserimento di fotogrammi chiave per un campione, seguire questi passaggi.
- Allocare un buffer per contenere il campione e recuperare un puntatore all'interfacciaINSSBuffercontenente il buffer chiamando IWMWriter::AllocateSample.
- Recuperare la posizione e le dimensioni del buffer creato nel passaggio 1 chiamando INSSBuffer::GetBufferAndLength.
- Copiare i dati di esempio nella posizione del buffer, assicurandosi che l'esempio passato entri nel buffer allocato. A seconda dell'origine degli esempi, è possibile usare un'ampia gamma di funzioni per copiare i dati. Ad esempio, se si copia un flusso da un file AVI, è possibile usare la funzione AVI, AVIStreamRead.
- Aggiornare la quantità di dati usati nel buffer per riflettere le dimensioni effettive dell'esempio chiamando INSSBuffer::SetLength.
- Ottieni un puntatore all'interfaccia INSSBuffer3 chiamando INSSBuffer::QueryInterface .
- Imposta il campione come fotogramma chiave forzato chiamando il metodo INSSBuffer3::SetProperty per impostare la proprietà WM_SampleExtensionGUID_OutputCleanPoint. Questa proprietà è un valore booleano; impostarla su TRUE.
- Passa l'interfaccia del buffer al writer insieme al numero di input e al tempo di campionamento usando il metodo IWMWriter::WriteSample.
Argomenti correlati