概述
问题
- 切换到后台以后VTDecompressionSessionRef都会变得不可用,从后台切换到前台需要重建Session
- 重建Session是需要时间的,这个时间大概是0.5~2s左右,并不是一个固定的值
- 重建后的VTDecompressionSessionRef并不能从之前位置继续解码,只有从关键帧位置开始解码才是正常的
解码解决方案
| i1 | p1 | p2 | p3 | p4 | p5 | p6 | p7 | p8 | p9 | p10 | p11 | p12 | p13 | i2 | p...
如果在切换后台之前我们正在解码p5,那么从后台切换回来以后我们需要从p6位置继续解码
- 暂时使用软解
- 前面说到重建VTDecompressionSessionRef是需要时间的,如果业务上需要从后台切换回来以后能“马上”播放,那么此时可以先用软解替换硬解,等硬解准备好以后再切换回去
- 软解需要从i1位置开始解码,一直到p6之前的解码数据都需要丢弃掉(这个速度是很快的,解码一帧1080P的数据大概是10ms,解码30帧数据也就是300ms,正常情况下是能满足业务需求的)
- 要从i1位置开始解码,那么最少保存最近一个GOP的完整数据
- 允许重建VTDecompressionSessionRef的时间
- 如果允许VTDecompressionSessionRef的时间,那么代码逻辑就简单一些,不需要做软解到硬解的切换,但是还是需要做快速解码(从i1位置开始解码,一直到p6之前的解码数据都需要丢弃掉)
- 要从i1位置开始解码,那么最少保存最近一个GOP的完整数据
- 允许跳帧
- 这个方案就更加简单了,不需要缓存已经解码的数据,直接从i2位置开始解码就好了,需要做好音视频同步
最后
以上就是壮观乐曲为你收集整理的播放器切换后台VideoToolbox的问题的全部内容,希望文章能够帮你解决播放器切换后台VideoToolbox的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复