错误代码-8969,-12909,同时使用视频工具箱解码iOS 8中的h264

错误代码-8969,-12909,同时使用视频工具箱解码iOS 8中的h264,第1张

概述我有h264流以Annex B格式,并遵循这个链接 here,用iOS8 videoToolBox实现h264解码. 我在每一步都检查OSStatus. >使用CMVideoFormatDescriptionCreateFromH264ParameterSets与SPS和PPS数据创建一个CMFormatDescription(status == noErr) >使用VTDecompression 我有h264流以Annex B格式,并遵循这个链接 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(设备)在
回调函数.

我怀疑我在step3中做错了,我不太确定长度代码的意思.我只是跟随WWDC会话视频替换每个NALUnit开始代码00 00 00 01到00 00 80 00.是对还是不对?或者我应该检查其他东西?谢谢

解决方法 最后,它现在工作了.
所以,我分享了如何使用vIDeoToolBox来解码h.264流数据而不是在屏幕上显示的细节.

得到SPS,PPS形成H.264流数据.
>使用CMVIDeoFormatDescriptionCreateFromH264ParameterSet创建CMFormatDescription.
>使用VTDecompressionSessionCreate创建VTDecompressionSession.
>将NALUnit有效内容转换为CMBlockBuffer.
>用4个字节的长度代码替换起始码. (ps:length = NALUnit length – 起始码长度)
>使用CMSampleBufferCreate创建一个CMSampleBuffer.
>使用VTDecompressionSessionDecodeFrame并从回调获取结果.

那么你必须使用dispatch_semaphore_t控制帧解码和显示.
我上传了sample project on my git.希望能帮助别人.

总结

以上是内存溢出为你收集整理的错误代码-8969,-12909,同时使用视频工具箱解码iOS 8中的h264全部内容,希望文章能够帮你解决错误代码-8969,-12909,同时使用视频工具箱解码iOS 8中的h264所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107019.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存