我是靠谱客的博主 壮观乐曲,最近开发中收集的这篇文章主要介绍播放器切换后台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位置开始解码就好了,需要做好音视频同步

最后

以上就是壮观乐曲为你收集整理的播放器切换后台VideoToolbox的问题的全部内容,希望文章能够帮你解决播放器切换后台VideoToolbox的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部