Per forzare l'inserimento di Key-Frame

[La funzionalità associata a questa pagina, Windows Media Format 11 SDK, è una funzionalità legacy. È stata sostituita dal lettore di origine e dal writer sink. Lettore di origine e writer sink sono stati ottimizzati per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi lettore di origine e writer sink anziché 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 al writer, è possibile specificare che deve essere codificato come fotogramma chiave.

Per forzare l'inserimento di fotogrammi chiave per un esempio, seguire questa procedura.

  1. Allocare un buffer per contenere l'esempio e recuperare un puntatore all'interfaccia INSSBuffer contenente il buffer chiamando IWMWriter::AllocateSample.
  2. Recuperare la posizione e le dimensioni del buffer creato nel passaggio 1 chiamando INSSBuffer::GetBufferAndLength.
  3. Copiare i dati di esempio nella posizione del buffer, assicurandosi che l'esempio passato si adatti al 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.
  4. Aggiornare la quantità di dati utilizzata nel buffer per riflettere le dimensioni effettive del campione chiamando INSSBuffer::SetLength.
  5. Ottenere un puntatore all'interfaccia INSSBuffer3 chiamando INSSBuffer::QueryInterface.
  6. Impostare l'esempio come fotogramma chiave forzata chiamando il metodo INSSBuffer3::SetProperty per impostare la proprietà WM_SampleExtensionGUID_OutputCleanPoint. Questa proprietà è un valore booleano; impostarla su TRUE.
  7. Passare l'interfaccia del buffer al writer insieme al numero di input e all'ora di campionamento usando il metodo IWMWriter::WriteSample .

IWMWriter::WriteSample

Per scrivere esempi

Codifica VBR (Variable Bit Rate)

Scrittura di file ASF