流媒体动态码率自适应方案
2017-09-01 18:10
274 查看
流控(动态码率调整)机制:
1、缓冲区(视频输入、网络收发)。
2、socket缓存监测。
3、MTU控制。
4、丢帧处理与检测。
5、调整码率(根据目前的网络丢帧状况,来决定码率降低幅度)。
6、I、P帧处理,如果发现收到的P帧不完整,立即丢掉该P帧;如果发现收到的I帧不完整,丢掉整个GOP。
根据网络实时状况,上层丢帧来降低码率;定时判定网络状况,根据多次定时的网络结果,来深层次调整码率。
一、实时根据网络状况来调整码率。
如果网络状况不好,采用上层降低码率方案。暂时抛掉部分原始帧,这些帧不参与编码;通过这种最上层的简单方式来降低码率。
二、深层次调整码率判定
分析一下,丢帧的程度与持续时间。
2.1 网络状况一般
维持目前的状况,不做特殊深层次处理。
2.2 网络状况较差
深层次降低码率方案
1)降低源头帧率(譬如采样帧率,由25变为20)。
2)降低目标分辨率(譬如480*360的图像改为400*300的码率)
降低幅度,由网络状况决定,不采用连续阶梯降码率。
2.3网络状况良好
在长时间内观测到网络状况良好时候,可以发一些重复测试图片或者无效测试数据来检测是否需要丢帧。如果会丢帧,则不再发送重复图片;否则,采用深层次调整码率的方案缓慢提升码率。
注意:对于降低码率而言,一般要快速、幅度大一些;对于提升码率而言,一般要缓慢、幅度小一下。提升码率比降低码率,更为慎重!
1、缓冲区(视频输入、网络收发)。
2、socket缓存监测。
3、MTU控制。
4、丢帧处理与检测。
5、调整码率(根据目前的网络丢帧状况,来决定码率降低幅度)。
6、I、P帧处理,如果发现收到的P帧不完整,立即丢掉该P帧;如果发现收到的I帧不完整,丢掉整个GOP。
根据网络实时状况,上层丢帧来降低码率;定时判定网络状况,根据多次定时的网络结果,来深层次调整码率。
一、实时根据网络状况来调整码率。
如果网络状况不好,采用上层降低码率方案。暂时抛掉部分原始帧,这些帧不参与编码;通过这种最上层的简单方式来降低码率。
二、深层次调整码率判定
分析一下,丢帧的程度与持续时间。
2.1 网络状况一般
维持目前的状况,不做特殊深层次处理。
2.2 网络状况较差
深层次降低码率方案
1)降低源头帧率(譬如采样帧率,由25变为20)。
2)降低目标分辨率(譬如480*360的图像改为400*300的码率)
降低幅度,由网络状况决定,不采用连续阶梯降码率。
2.3网络状况良好
在长时间内观测到网络状况良好时候,可以发一些重复测试图片或者无效测试数据来检测是否需要丢帧。如果会丢帧,则不再发送重复图片;否则,采用深层次调整码率的方案缓慢提升码率。
注意:对于降低码率而言,一般要快速、幅度大一些;对于提升码率而言,一般要缓慢、幅度小一下。提升码率比降低码率,更为慎重!
相关文章推荐
- 上下div高度动态自适应--另类处理方案
- 上下div高度动态自适应--另类处理方案
- HTTP动态自适应流媒体现状
- 上下div高度动态自适应--另类处理方案
- 北京大学计算所网络视频组动态自适应流媒体(DASH)项目主页
- 实时监控、直播流、流媒体、视频网站开发方案设计简要
- tchart _实时动态决策分析方案
- U3D资源动态加载异步方案探究
- Python 抓取动态网页内容方案详解
- jquery表格动态增删改及取数据绑定数据完整方案
- UPYUN基于ngx_lua的动态服务路由方案
- 让动态的 iframe 内容高度自适应
- 一种动态为apk写入信息的方案
- 移动端网页大小自适应方案
- web app 自适应方案总结 关键字 弹性布局之rem
- java动态生成word和PDF的几种方案
- spring+quartz 动态任务方案
- 如何动态改变ImageView大小 -- 方案之二
- EasyDarwin开源流媒体服务器性能瓶颈分析及优化方案设计