我正在使用VTCompressionSessionEncodeFrameWithOutputHandler從相機壓縮像素緩衝區到原始h264流。我使用kVTEncodeFrameOptionKey_ForceKeyFrame確保VTCompressionSessionEncodeFrame的每個輸出都不依賴於其他作品。另外,在會話初始化期間有kVTCompressionPropertyKey_AllowFrameReordering = false,kVTCompressionPropertyKey_RealTime = true選項,以及在每個VTCompressionSessionEncodeFrame調用之後調用VTCompressionSessionCompleteFrames。VTCompressionSessionEncodeFrame:上一秒丟失了嗎?
我還收集由VTCompressionSessionEncodeFrame生成的樣本,並定期將它們保存爲MP4文件(使用Bento4庫)。
但是最終曲目總是比樣本要短,在1-2秒鐘之後傳給VTCompressionSessionEncodeFrame。經過多次嘗試解決這個問題之後,我可以肯定的是,它是VTCompressionSessionEncodeFrame輸出幀,它依賴於後來的幀被正確解碼 - 所以這些幀丟失了,因爲它們不能用於產生軌道的「最終塊」 。
所以這個問題 - 如何強制VTCompressionSessionEncodeFrame產生完全獨立的數據塊?