首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VTCompressionSessionEncodeFrame:最后几秒钟丢失了吗?

VTCompressionSessionEncodeFrame:最后几秒钟丢失了吗?
EN

Stack Overflow用户
提问于 2017-08-12 02:06:21
回答 1查看 378关注 0票数 0

我使用将摄像头中的像素缓冲区压缩成原始的h264流。我使用kVTEncodeFrameOptionKey_ForceKeyFrame来确保VTCompressionSessionEncodeFrame的每个输出都不依赖于其他部分。此外,在会话初始化期间还有kVTCompressionPropertyKey_AllowFrameReordering = false、kVTCompressionPropertyKey_RealTime = true选项,以及在每次VTCompressionSessionEncodeFrame调用之后调用VTCompressionSessionCompleteFrames。

我还收集由VTCompressionSessionEncodeFrame生成的样本,并定期将它们保存为MP4文件(使用Bento4库)。

但最终轨迹总是比样本短,在1-2秒内馈送到VTCompressionSessionEncodeFrame。经过几次尝试来解决这个问题,我可以肯定的是,它的VTCompressionSessionEncodeFrame输出帧,这取决于后来的帧被正确解码-所以这个帧是丢失的,因为他们不能用来产生“最后的块”的轨道。

那么问题来了--如何迫使VTCompressionSessionEncodeFrame生成完全独立的数据块呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-14 20:33:34

原来这是..。FPS问题!NAL单元本身没有特殊的定时(除了at,在我的例子中是捕获FPS限制的),所以它们以电影中FPS期望的精确速率产生是相当重要的。没有丢失任何东西,只是保存的帧播放得更快(事实上,这不是那么容易发现的)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45641349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档