強制插入Key-Frame
[與此頁面相關聯的功能 Windows Media Format 11 SDK是舊版功能。 來源讀取器和接收寫入器已取代它。 來源讀取器和接收寫入器已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用來源讀取器和接收寫入器,而不是Windows Media Format 11 SDK。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
Windows Media Video 9 編解碼器支援強制主要畫面格插入。 當您將範例傳遞至寫入器時,您可以指定它必須編碼為 主要畫面格。
若要強制插入範例的主要畫面格,請執行下列步驟。
- 配置緩衝區來保存範例,並藉由呼叫IWMWriter::AllocateSample來擷取包含緩衝區的INSSBuffer介面指標。
- 呼叫 INSSBuffer::GetBufferAndLength,以擷取在步驟 1 中建立的緩衝區位置和大小。
- 將範例資料複製到緩衝區位置,確定傳遞的範例會符合配置的緩衝區。 根據您的範例來源,您可以使用各種函式來複製資料。 例如,如果您要從 AVI 檔案複製資料流程,您可以使用 AVI 函式 AVIStreamRead。
- 藉由呼叫 INSSBuffer::SetLength來更新緩衝區中使用的資料量,以反映樣本的實際大小。
- 藉由呼叫INSSBuffer::QueryInterface來取得INSSBuffer3介面的指標。
- 藉由呼叫 INSSBuffer3::SetProperty 方法來設定WM_SampleExtensionGUID_OutputCleanPoint屬性,將範例設定為強制的主要畫面格。 此屬性是布林值;將它設定為 TRUE。
- 使用 IWMWriter::WriteSample 方法,將緩衝區介面連同輸入編號和取樣時間一起傳遞至寫入器。
相關主題