是否有可能將水槽寫入器的當前進度沖到檔案中?類似于IMFSinkWriter::Finalize,但允許樣本仍然被寫入。目前,我必須把所有的樣本寫到SinkWriter,然后再最終確定。然而,這意味著所有的樣本都需要被加載到記憶體中。
我正在向一個MP4輸出容器寫入壓縮的H264幀。
IMFSinkWriter使用MFCreateSinkWriterFromURL連接到一個IMFByteStream。我已經試過在每個IMFSinkWriter::WriteSample之后IMFByteStream::Flush,盡管這似乎沒有任何作用。
uj5u.com熱心網友回復:
Media Foundation sinks不應該將樣本加載到記憶體中,因此,首先,標語問題是不正確的。對此沒有直接的答案,或者說,如果需要一個簡短的答案,那么答案是 "不"。
這一挑戰背后的重要部分是所產生的資料流(通常是一個檔案)的結構以及中斷它的能力,然后從中間點繼續。這種行為是特定格式的,因此將問題縮小到感興趣的格式是很重要的。你提到了MP4,Windows為MP4提供了兩個匯:一個是普通的MP4檔案,另一個是所謂的碎片化的MP4檔案。兩者都不能以二級片可單獨播放的方式重繪 和繼續播放。
要解決上述從新檔案沖刷和恢復的任務,最簡單的方法也許是實施自定義的媒體基金會媒體水槽。這個軟體專案可以積累資料,并通過啟動一個具有真正MP4水槽的二級管道來 "沖洗",從而獲得一個輸出檔案,或者它可以替代性地實作MP4相關規范,并產生構成MP4檔案的盒子/原子。或者,它也可以嵌入一些第三方的API或庫,以達到類似的效果。
。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/320274.html
標籤:
下一篇:使用GDI API來繪制影像
