错误代码-8969,-12909,同时在iOS 8中使用video工具框解码h264
我有在附录B格式的h264stream,并按照此链接在 iOS8 videoToolBox实现h264解码。
我每一步都检查OSStatus。
-
使用CMVideoFormatDescriptionCreateFromH264ParameterSets与SPS和PPS数据创build一个CMFormatDescription。(status == noErr)
-
使用VTDecompressionSessionCreate创build一个VTDecompressionSession。 (status == noErr)
-
将NALUnit有效载荷捕获到CMBlockBuffer中,确保使用replace开始代码
一个字节长度的代码。 (status == noErr) -
创build一个CMSampleBuffer。 (status == noErr)
-
使用VTDecompressionSessionDecodeFrame并在callback函数中获得错误代码-8969(模拟器),-12909(设备)。
我怀疑我在第三步做了什么错误,我不太确定长度代码的含义。 我只是按照WWDC会话videoreplace每个NALUnit开始代码00 00 00 01到00 00 80 00.是对还是不对? 或者我应该检查别的东西? 谢谢
最后,现在得到它的工作。 所以,我分享了如何使用videoToolbox解码h.264stream数据的细节,而不是显示在屏幕上。
- 获得SPS,PPS格式的H.264stream数据。
- 使用CMVideoFormatDescriptionCreateFromH264ParameterSets创buildCMFormatDescription。
- 通过使用VTDecompressionSessionCreate创buildVTDecompressionSession。
- 将NALUnit有效载荷转换为CMBlockBuffer。
- 用4字节的长度代码replace开始代码。 (ps:长度= NALUnit长度 – 起始码长度)
- 使用CMSampleBufferCreate创build一个CMSampleBuffer。
- 使用VTDecompressionSessionDecodeFrame并从callback中获得结果。
那么,你必须使用dispatch_semaphore_t来控制帧解码和显示。 我上传了我的git的示例项目 。 希望能帮助别人。