原文:http://blog.5ibc.net/p/33817.html

编码、解码失效都可以restart一下。

IOS硬件解码VideoToolbox在应用中进入后台VTDecompressionSession失效解决办法

*前段时间在IOS上用VideoToolbox进行视频播放器硬件解码时遇到一个问题,就是播放器进入进入到后台后再切换回来会导致VTDecompressionSession直接失效,这个问题纠结了很久,后来终于找到解决办法了,直接重新初始化session,下面展示一段示例代。 
参考链接 
http://www.zhihu.com/question/20692215 
引用了stevenyao/iOSHardwareDecoder · GitHub的代码,这段代码里面没有对session失效了进行处理,我在里面加了下面这段处理,就可以了。

- (void)resetH264Decoder
{if(_deocderSession) {VTDecompressionSessionInvalidate(_deocderSession);CFRelease(_deocderSession);_deocderSession = NULL;}CFDictionaryRef attrs = NULL;const void *keys[] = { kCVPixelBufferPixelFormatTypeKey };//      kCVPixelFormatType_420YpCbCr8Planar is YUV420//      kCVPixelFormatType_420YpCbCr8BiPlanarFullRange is NV12uint32_t v = kCVPixelFormatType_420YpCbCr8BiPlanarFullRange;const void *values[] = { CFNumberCreate(NULL, kCFNumberSInt32Type, &v) };attrs = CFDictionaryCreate(NULL, keys, values, 1, NULL, NULL);VTDecompressionOutputCallbackRecord callBackRecord;callBackRecord.decompressionOutputCallback = didDecompress;callBackRecord.decompressionOutputRefCon = NULL;if(VTDecompressionSessionCanAcceptFormatDescription(_deocderSession, _decoderFormatDescription)){NSLog(@"yes");}OSStatus status = VTDecompressionSessionCreate(kCFAllocatorSystemDefault,_decoderFormatDescription,NULL, attrs,&callBackRecord,&_deocderSession);CFRelease(attrs);
}

然后在遇到session失效时调用

if(decodeStatus == kVTInvalidSessionErr){NSLog(@"IOS8VT: Invalid session, reset decoder session");[self resetH264Decoder];}

IOS硬件解码VTDecompressionSession失效相关推荐

  1. AIR 3实现iOS下对H.264视频硬件解码

    本帖最后由 nextria 于 2011-10-9 11:27 编辑 在此之前,AIR开发的应用程序在iOS下是不可能实现对H.264视频硬解码的, 也许是以一个多比特率的方式传送. 我知道,是吧? ...

  2. 全平台硬件解码渲染方法与优化实践

    硬件解码后不恰当地使用OpenGL渲染会导致性能下降,甚至不如软解.本文来自PPTV移动端研发经理王斌在LiveVideoStackCon 2017大会上的分享,并由LiveVideoStack整理而 ...

  3. RIoTBoard开发板系列笔记(四)—— 使用VPU硬件解码

    视频解码分为软解和硬解两种,简单的来说纯粹依靠CPU来解码的称为软解,而使用GPU/VPU解码的称为硬解.常规地直接用CPU解码会极大地消耗CPU的运算能力,硬件解码是通过显卡的视频加速功能对高清视频 ...

  4. RIoTBoard开发板系列笔记(十二)—— gstreamer + vpu实现视频硬件解码播放

    i.mx6 solo芯片中包含一个VPU (video processing unit),可以进行视频硬件编解码加速,之前RIoTBoard开发板系列笔记(四)-- 使用VPU硬件解码文章简单的记录了 ...

  5. rk3588 ffmpeg使用硬件解码

    rk3588 ffmpeg使用硬件解码 安装ffmpeg最新的静态构建版本 方法1 安装rkmpp 安装264 安装libdrm 下载ffmpeg源码 方法2 ppa搜索需要的软件包 安装支持rkmp ...

  6. Mediacodec 如何硬件解码到纹理的

    Mediacodec 如何硬件解码到纹理的 背景: 网上很多关于mediacodec,surface ,surfacetexture的源码分析,以及内部原理,但是都局限于各自的内容,今天我们就从med ...

  7. SkeyeRTSPLive高效转码之SkeyeVideoDecoder采用Nvidia独立显卡高效硬件解码解决方案(附源码)

    在我之前写的一篇文章<SkeyeRTSPLive传统视频监控互联网+实现利器解决方案>中提到RTSP转RTMP的转流过程,简化流程就是通过SkeyeRTSPClient拉RTSP流,获取音 ...

  8. 树莓派的硬件解码播放神器——Omxplayer

    播放神器--Omxplayer 树莓派是支持1080P电影播放的,那么在命令行操作的情况下怎么才能播放1080P电影,及高质量无损音乐呢.经过几款播放器的横向对比,最终笔者推荐播放神器--Omxpla ...

  9. dxva2+ffmpeg硬件解码(Windows)重要笔记3

    参考了csdn上Win32Project1_ffmpeg_dxva2这个例子,很不错,直接就可以运行. 但是,有几个问题: 1.窗口无法正常缩放,缩放后,图像大小并没有一起缩放 2.H265的编码格式 ...

最新文章

  1. 内嵌在客户端的网页出现刷新问题
  2. python鱼眼图像识别_一种融合鱼眼图像与深度图像的动态环境视觉里程计方法与流程...
  3. Java协作开发,Java开发学习笔记之八:servlet之间的协作
  4. 家装强电弱电布线图_家装水电安装技巧?水电验收技巧?
  5. Linux中环境变量文件及配置
  6. django-cbv与fbv
  7. 实现点击页面其他地方,隐藏div(vue)
  8. linux脚本定时执行,Shell脚本实现每个工作日定时执行指定程序
  9. 小程序学习笔记(3)-模板的操作
  10. Docker 之MySQL 重启,提示Error response from daemon: driver failed programming external connectivity on **
  11. 基于Python/PYQT5的动物识别专家系统(人工智能实验)
  12. 毕业设计 微信小程序 外卖点餐平台
  13. HEVC/H.265与AVC/H.264对比总结
  14. 检测华为网络设备的常用命令
  15. 报错:When executing step qmake
  16. 谷歌学术搜索 简易PDF爬虫
  17. maven依赖查询网站
  18. (附源码)php二手服装网站 毕业设计201711
  19. cocos制作水滴粘连效果
  20. 谁说程序员不懂浪漫,表白代码来啦~

热门文章

  1. php+mysql_msqli简单实例
  2. Web 实时通信 WebRTC
  3. 本地缓存到分布式缓存( Guava, Caffeine, Memcached, Redis)
  4. MATLAB编写自己的BP神经网络程序
  5. linux移动文件 rf参数_linux下文件的复制、移动与删除
  6. Mybatis与JDBC的对比超详细笔记
  7. vue 判断权限过期_vue 路由权限
  8. collectors 求和_Java-Collectors常用的20个方法
  9. python zip函数_python内置函数-zip
  10. ASP.NET中DropDownList控件的简单使用--DDL绑定数据库表中值,选择DDL中值直接检索数据...