播放器切换后台VideoToolbox的问题

问题

  1. 切换到后台以后VTDecompressionSessionRef都会变得不可用,从后台切换到前台需要重建Session
  2. 重建Session是需要时间的,这个时间大概是0.5~2s左右,并不是一个固定的值
  3. 重建后的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位置开始解码就好了,需要做好音视频同步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值