我正在爲mpeg4視頻流的自定義實現編寫一個視頻解碼器(使用FFMPEG/AVCodec)。這個視頻流的特點是,它可以分裂成許多「兒子」流,基於同一父母創建許多P幀。我試圖解碼的視頻流實際上是一種「視頻樹」。事情是這樣的:如何創建解碼器的完整副本?
I <--P <--P <---------------------P <-------------- P <------------ P
\ <--P <--P <--P \ <--P <--P \ <--P <--P
我已經寫了,當我決定遵循一條路徑的正常工作基本解碼器,問題是,當我嘗試按照視頻中的樹不止一條路徑。此時我需要「解鎖」我的解碼器來跟蹤兩個不同的視頻流。分裂可能不僅發生在關鍵幀之後,而且甚至發生在P幀之後,所以我需要複製AVCodecContext(我使用avcodec_copy_context
),但它似乎從乾淨的狀態創建新的解碼器..它似乎忽略了以前的視頻狀態,所以解碼的P幀被「應用」到空的視頻幀。 可能使用avcodec_copy_context
複製上下文是不夠的...任何建議?我如何複製上下文和解碼器的完整狀態? 或者,有沒有其他的方式來解碼我的流使用引用? 謝謝!
你有沒有設法找到如何做一個AVCodecContext的深層副本? – zahirdhada