Ios H.264:VTDecompressionDecodeFrame失败,代码为12909

Ios H.264:VTDecompressionDecodeFrame失败,代码为12909,ios,h.264,video-toolbox,Ios,H.264,Video Toolbox,我正在显示来自IP摄像机的RTSP流。我想用VideoToolbox框架替换此方法。我对视频数据处理有点陌生,所以我有点迷路了 我已经从和测试了这两种解决方案,但最终该方法失败VTDecompressionDecodeFrame Error Domain=NSOSStatusErrorDomain Code=-12909 "The operation couldn’t be completed. (OSStatus error -12909.)" - -12909 我怀疑这是来自会话,因为如果

我正在显示来自IP摄像机的RTSP流。我想用VideoToolbox框架替换此方法。我对视频数据处理有点陌生,所以我有点迷路了

我已经从和测试了这两种解决方案,但最终该方法失败
VTDecompressionDecodeFrame

Error Domain=NSOSStatusErrorDomain Code=-12909 "The operation couldn’t be completed. (OSStatus error -12909.)" - -12909
我怀疑这是来自会话,因为如果我在创建会话后立即调用此
VTDecompressionsConacceptFormatDescription
,结果是
NO

以下是如何创建我的会话:

VTDecompressionOutputCallbackRecord callback;
callback.decompressionOutputCallback = decompressionSessionDecodeFrameCallback;
callback.decompressionOutputRefCon = (__bridge void *)self;
NSDictionary *destinationImageBufferAttributes =[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],(id)kCVPixelBufferOpenGLESCompatibilityKey,[NSNumber numberWithInt:kCVPixelFormatType_32RGBA],(id)kCVPixelBufferPixelFormatTypeKey,nil];
OSStatus status = VTDecompressionSessionCreate(kCFAllocatorDefault, _formatDesc, NULL,
                                                   (__bridge CFDictionaryRef)destinationImageBufferAttributes,
                                                   &callback, &_decompressionSession);
我也不确定要使用的数据。我可以选择AVPacket.data、AVCodecContext.extradata、AVPacket.buf->data。谁能告诉我该用哪一种(也许还有另一种)

Thx提前


附:这是我的第一篇文章;如果未正确显示/解释,请告知我。

我已成功获得此方法的一个成功状态。结果发现我有索引问题,我粘贴的代码有一些bug(至少,它不适合我的情况,特别是管理NALU类型1和5)


我还有一个问题,因为所有其他调用都返回失败,但我想我必须发布另一个问题。

Hi@pyonpyon,你能发布你的解决方案吗?或者说是什么导致了错误的发生?