iOS关于AVSampleBufferDisplayLayer进入后台失效的解决办法

关于AVSampleBufferDisplayLayer怎么使用就不多说,应该有不少文章来说明如何使用它来渲染h.264码流,这里主要讲遇到的问题,在使用AVSampleBufferDisplayLayer进行渲染的时候,发现这个layer在程序按home键或者锁屏进入后台的时候会渲染失败,具体是打印这么一句话 "Ignoring enqueueSampleBuffer: because status is "failed"" 那么这句话的意思大概就是渲染模式为失败的含义,对此我之前一直都是用进入后台到前台就重新创建一个新的AVSampleBufferDisplayLayer来解决这个问题,但是最近发现一个很奇葩的问题,就是在重复创建16次的时候,就再也显示不出来画面了,这是相当蛋疼的,没办法,上面催得紧,只好重新想别的办法,最后仔细查看文档和头文件时,发现有这么一段话

看完这句话,是不是就恍然大悟了,原来官方早就知道有这么一个问题,还提供了解决办法,大概意思就是说要我们判断这个status状态是不是failed,如果是failed,可以使用 -flush这个方法来重新让 layer渲染生效。

至此,应该是没什么问题了,我就说说我是如何做的吧,我在每次进行渲染前都会判断这个status的类型,一旦这个类型为failed,那么我就会调用这个方法。

那么到现在就是还有一个问题,就是从后台进入前台的时候,屏幕还是会黑屏一,两秒的时间才能渲染出来画面,结合我们后台那边是3秒一传关键帧,不知道这个是否有关系,希望做过的类似的能指点一二吧。谢谢。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,420评论 25 708
  • 本篇文章是基于谷歌有关Graphic的一篇概览文章的翻译:http://source.android.com/de...
    lee_3do阅读 7,190评论 2 21
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,967评论 19 139
  • 转载:http://www.jianshu.com/p/32fcadd12108 每个UIView有一个伙伴称为l...
    F麦子阅读 6,312评论 0 13
  • Facebook 最近推出了一个新型的 HTML5 游戏业务: Instant Game,目前还处于内测阶段,没有...
    奔跑在春风里阅读 2,433评论 0 3