为什么AVSampleBufferDisplayLayer因操作中断而失败(-11847)?

我正在使用AVSampleBufferDisplayLayer来解码和显示从服务器流式传输的H.264video。 当我的应用程序进入后台然后返回到前台时,解码过程变得AVSampleBufferDisplayLayer失败。 我看到的错误是:

 H.264 decoding layer has failed: Error Domain=AVFoundationErrorDomain Code=-11847 "Operation Interrupted" UserInfo=0x17426c500 {NSUnderlyingError=0x17805fe90 "The operation couldn't be completed. (OSStatus error -12084.)", NSLocalizedRecoverySuggestion=Stop other operations and try again., NSLocalizedDescription=Operation Interrupted} 

有没有其他人使用AVSampleBufferDisplayLayer这样的问题? 这是什么意思?

我试图在我收到错误时销毁AVSampleBufferDisplayLayer并创建一个新的,但后来我开始从H.264解码器接收其他错误:

 Error Domain=AVFoundationErrorDomain Code=-11821 "Cannot Decode" UserInfo=0x1740e9700 {AVErrorMediaSubTypeKey=(1635148593), NSLocalizedFailureReason=The media data could not be decoded. It may be damaged., NSUnderlyingError=0x174247680 "The operation couldn't be completed. (OSStatus error -12909.)", AVErrorMediaTypeKey=vide, AVErrorPresentationTimeStampKey=CMTime: {7/30 = 0.233}, NSLocalizedDescription=Cannot Decode} 

AVSampleBufferDisplayLayer失败之前,我没有收到任何这些错误。

重建一个新的AVSampleBufferDisplayLayer后,你应该用最后一个最近的IDR帧排队,除了当前帧是IDR,这意味着你应该在解码时将nalus保存在一个GOP中,并在下一个IDR到来时删除它们。