iOS常见问题

iOS关于AVSampleBufferDisplayLayer进

2016-12-12  本文已影响654人  NicWhite

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

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

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

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

上一篇下一篇

猜你喜欢

热点阅读