我有a2 B格式的h264流,并按照此链接here使用iOS8 videoToolBox实现h264解码。
我在每一步都检查OSStatus。
将CMVideoFormatDescriptionCreateFromH264ParameterSets与SPS和PPS数据一起使用以创建CMFormatDescription。(status == noErr)
使用VTDecompressionSessionCreate创建VTDecompressionSession。 (status == noErr)
将NALUnit有效负载捕获到CMBlockBuffer中,确保将起始代码替换为
一个字节长度的代码。 (status == noErr)
创建CMSampleBuffer。 (status == noErr)
使用VTDecompressionSessionDecodeFrame并获取错误代码-8969(模拟器), - 12909(设备)in 回调函数。
我怀疑我在第3步中做错了什么,我不太清楚长码是什么意思。我只是按照WWDC会话视频替换每个NALUnit开始代码00 00 00 01到00 00 80 00.是不对?或者我应该检查别的东西?谢谢
答案 0 :(得分:15)
最后,现在就开始工作了。 因此,我分享了有关如何使用VideoToolbox解码h.264流数据的详细信息:
CMFormatDescription
创建CMVideoFormatDescriptionCreateFromH264ParameterSets
。VTDecompressionSession
创建VTDecompressionSessionCreate
。CMBlockBuffer
。CMSampleBuffer
创建CMSampleBufferCreate
。VTDecompressionSessionDecodeFrame
并从回调中获取结果。然后,你必须使用dispatch_semaphore_t来控制帧解码和显示。 我上传了sample project on my git。希望能帮助别人。