我有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的更多相关文章

  1. ios – SecItemAdd返回OSStatus代码-50

    谢谢,能够.解决方法您不能对[keychainsetobject:forKey:]使用任意键.以下将有效:Appledocumentation充满了关于此的信息.

  2. ios – 崩溃错误代码:-1001错误:NSURLErrorTimedOut

    我遇到以下事故:崩溃只出现在iOS9上,没有在iOS8上,但这可能只是巧合.我也通过Crittercism面包屑看到这个:我也使用了后台提取,它打到了网络层.任何想法为什么这是打嗝?

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

    或者我应该检查其他东西?

  4. swift学习之错误代码 EXC_BCD

    刚刚看到了可选类型。当执行“强制解析可选”时,问题就出来了,无法完成对一个没有赋值的变量进行强制解析,顺理成章的就会出现EXC_BCD错误。注意:1,在bject_c中,nil表示的是一个指向不存在的对象的指针。而在swift中,表示空关键字为nil,它没有定义其他含义。多读几次吧)3,nil不能用于非可选的常量或者变量,如果你的代码中可能会出现没有值的情况,请务必声明其为可选类型。

  5. 无法修复Android Proguard返回错误代码1错误

    当我尝试在我的Android应用程序中使用proguard时只需添加到我的project.properties文件,APK导出失败并显示消息Proguard返回错误代码1这是我的project.properties文件这是错误堆栈:解决方法将这些行添加到proguard配置文件(proguard-android.txt)见ProguardTroubleshooting请注意,如果您使用您的配置文件

  6. Android应用程序不断崩溃audioEffect错误代码-1

    我在我的应用程序的主要活动中添加了一些代码用于连续生成和回放正弦波,并创建了一个PresetReverb对象以在正弦波上测试它.但是,每次我启动它时,应用程序崩溃,它会在logcat中生成:以下是活动的代码:显然创建PresetReverb对象的行存在问题……但我无法弄清楚原因.究竟是什么导致我的应用程序崩溃?解决方法尝试添加到您的清单文件中的权限列表.

  7. android – 谷歌玩游戏服务错误代码400

    >去吧只需复制/粘贴“应用程序签名证书”“SHA-1证书指纹”–而不是“上载证书”“SHA-1证书指纹”,它是您的密钥库中的一个,位于APIID客户端OAuth2.0中.这将做你的工作!截至目前,谷歌玩游戏已不再在本地连接.但是当它被导入谷歌游戏商店时它已成功连接.注意:上图是从GitHub开放问题中获取的.希望这可以帮助!!

  8. android – BluetoothGattCallback – onConnectionStateChange返回status22

    我正在开发一个Android应用程序来与蓝牙模块双模式接口.由于模块是双模式,我遇到了here所描述的相同问题.但是我尝试做一个变通方法,因为在第一次连接之后,回调onConnectionStateChange()返回状态133.总是在MainActivity的onStop()方法中,我关闭BluetoothGatt对象以释放资源.进一步在bluetooth.close()之前添加了bluetoo

  9. Android应用内结算错误:无法购买此商品. (错误代码:IAB-DPTL)

    (产生删除当前发布的应用程序的风险?)我没有看到我遗漏的内容,而且我无法在网上找到有关此错误代码的任何信息.我做错了什么?解决方法好的,我找到了解决方案!该bug直接由我在productId期间关联的“payloadContent”引起购买请求.我曾经将我的可购买项目转换为JSON并将其作为开发人员有效内容.(认为对恢复阶段有用……

  10. android – 使用ContentProvider时出现“错误代码5:数据库被锁定”

    2)为什么这不会出现在等效的API2.3.3仿真器上?具有讽刺意味的是,我的调试日志记录导致错误并没有丢失.如果我无法解决它,我的下一步是将日志消息捆绑在一个列表中,并一次一批地将它们转储出来.这是通过代码到错误的路径:活动:内容提供商:DatabaseHelper:解决方法您是否可能使用多个sqliteDatabase实例访问数据库?您只能与数据库建立一个连接,否则您将收到您遇到的错误.sqliteDatabase本身是线程安全的,因此您可以同时访问它.

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部