zoukankan      html  css  js  c++  java
  • 视频播放器的丢帧逻辑

        最近在做播放器在电视盒子上的适配,发现一个严重的问题:低端机型解码能力不足。表现是丢帧,音画不同步。对此,有两种解决方法。

    一、解码前丢帧

        思路是记录25帧(1s)解码的总时间decodeTotalTime,减去25帧播放的总时间playTotalTime得到差值diff。如果diff大于0,说明解码耗时较长,应该开启丢帧。丢帧策略可以开启级别,最低级为8帧丢一帧,最高级为2帧丢1帧,直到diff小于0,关闭丢帧。

    二、渲染前丢帧

        由于音视频同步时,会把音频的播放时间作为标准时间,视频同步时会与标准时间校准。那么可以得到视频时间戳的实际值与理想值的差值。如果这个差值在一定的范围内(60ms?),那么视为可以忍受的范围;如果这个差值大于一个阈值,那么开启丢帧,丢帧同样设置级别,直到视频时间戳的实际值与理想值在一定范围内,再关闭丢帧。

        适配电视盒子时,发现即使丢帧了,仍然还有音画不同步现象。对此,把音视频同步的逻辑改的更激进了一点,也就是说视频追赶音频的步进值更大,问题得以解决。这种改法的缺点是,观看正片时会有些许一顿一顿的现象。

  • 相关阅读:
    生产环境常见的几种JVM异常
    JVM垃圾回收时如何确定垃圾?是否知道什么是GCRoots?
    你平时工作用过的JVM常用基本配置参数有哪些?
    java X参数
    JUC之CAS
    JUC之List集合
    JUC之lock
    JUC之volatile
    BZOJ2132: 圈地计划
    BZOJ3991: [SDOI2015]寻宝游戏
  • 原文地址:https://www.cnblogs.com/jiayayao/p/10023951.html
Copyright © 2011-2022 走看看