zoukankan      html  css  js  c++  java
  • 推流当中自适应码率的策略

    从书上看到的关于自适应码率的一些策略,记录一下,实现上面因为在推流端就可以完成这些操作,所以感觉还是比较实用的。

    具体实现细节可能还需要琢磨琢磨,才能运用到现实推流当中。

    关于上面说的自适应码率策略可以分为三个模块:

    1.网络带宽检测模块:

     视频数据采集之后经历了编码推流阶段,在编码阶段有编码阶段的“压缩码率” 、在推流阶段有推流阶段的“推流码率”。

     这个模块主要是对上面两个阶段的码率进行对比,从而确定当前网络上行带宽是否足以将编码器编码出来的视频帧发布到CDN接点服务器上。

    2.码率调整策略:

     由上面的带宽检测模块得出的结果也就分为了:“期待发送码率” 和 “实时压缩码率”。

     目的就很明显了,就是按照发送码率反馈给编码器来调整压缩码率,这里这两个值也不能直接拿来就进行对比,也需要结合当前的网络抖动,进行合理的“快速降”,“慢慢升”

     这种方式可以增加整个直播过程的流畅度。

    3.实时改变编码器的码率:

       目前主要的应用平台分为移动端和pc端。而编码又可以分为硬件编码和软件编码。相对pc端的移动端更多使用硬件编码。

       ios使用VideoToolBox 进行硬件编码,对系统要求必须是ios8.0以上直接使用videotoolbox 的API设置码率和fps就可以。

     android使用MediaCodec进行硬件编码,相对ios的话android可能就需要更多的适配了,厂家不同机型不同不能像ios那样直接调整。

     pc端一般都是软件编码,可以使用ffmpeg进行编码(内部使用的libx264),也可以直接使用libx264库进行编码。

  • 相关阅读:
    如何查看MySQL的当前存储引擎?
    避免生产环境执行更新删除语句忘记加where条件的解决方案
    物联网发展的现状
    目前行业内比较流行的开源时序数据库产品
    如何查看端口(3306)被那个程序占用
    MySQL数据库开发的36条军规
    介绍 MySQL 8 中值得关注的新特性和改进。
    IE浏览器 兼容性(IE9-11 差异说明)
    python3:(unicode error) 'utf-8' codec can't decode
    静态代码块
  • 原文地址:https://www.cnblogs.com/wainiwann/p/8946409.html
Copyright © 2011-2022 走看看