目前我正在試圖連接多個視頻文件在一起,要做到這一點最簡單的方法是使用MP4Parser
。但是,使用MP4Parser
必須使視頻具有相同的尺寸和幀率,因爲它僅處理容器。 fadden曾表示MP4支持可變幀頻視頻,MediaCodec
可以生成這些視頻,所以我正在考慮使用MediaCodec
套件來完成此任務。通過追加多MediaCodec視頻 - 關於多MediaExtractors和解碼器只是一個編碼器
假設我有3個視頻來連接,我想爲MediaExtractors
和MediaCodec
解碼器,每一個視頻和一個MediaCodec
編碼器將會把解碼緩衝到最終的視頻文件3個實例。
提取器和解碼器將被單獨運行一前一後,他們會被饋送到相同的編碼器。但是,我關心編碼器的EOS信號標誌。
我可以保持所述信號旗關閉,直到第三解碼器的成品?我是否也應該使用循環緩衝區執行此任務?
如何在開始時生成所有必需的「MediaExtractor」和解碼器「MediaCodec」對?例如,如果我必須連接4個視頻,我會爲每個視頻生成4個MediaExtractor和MediaCodec,每個視頻一對,使它們將緩衝區推入單個編碼器MediaCodec,然後依次運行。如果我走這條路線,是否會出現OutOfMemory異常等副作用? – Gensoukyou1337
正如我所說的,您可能會因爲一次使用太多的MediaCodec解碼器實例而陷入麻煩,此外,您只能在完成從第一個視頻輸入幀後才能從第二個視頻中提供幀(您提供給幀的順序編碼器應該按照您希望它們出現在結果視頻中的順序)。或者是否有這樣做的好處? – jfawkes
我的確如你所說,使用Extractor-Decoder對將視頻幀饋送到編碼器,然後在第一個視頻結束時迭代到下一個視頻。 mstorsjo表示,一次運行多個解碼器實例可能會有好處(例如,當您想在最終輸出中並排顯示兩個視頻時),但代碼會稍微複雜一些。 – Gensoukyou1337