播放器网络带宽预测方法
简介
带宽预测是播放器实现码率自适应的技术基础。只有对当前的带宽预测的足够准确,才能够选择出当前场景下最优的码率进行播放。下面分别介绍下ijkplayer、exoplayer及VLC的带宽预测方法。
ijkplayer
ijkplayer的带宽预测代码位于ijksdl_timer.c中,核心思想是对过去时间点的网速进行采样,使用过去所有采样点的加权均值对当前带宽进行预测。其核心结构体为SDL_SpeedSampler2:
|
SDL_SpeedSampler2结构体的last_profile_duration和last_profile_quantity变量比较难理解,需要结合代码逻辑才能更好地解释,首先看下增加采样点的代码:
|
上面介绍了采样的过程,预测的过程就十分简单了,和采样的流程基本一致:
|
总结:ijkplayer巧妙地使用一个结构体保存了”所有“采样点的信息,并且实现了带宽的加权平均预测,这种方法相对于单独记录每个采样点信息的方式会比较省内存,但是一些较老的采样点是否仍应该被计算进来则有待商榷。(其实就是指数移动平均)
exoplayer
exoplayer同样使用采样的方式进行带宽预测,其代码位于SlidingPercentile.java中,使用了滑动窗口的方式限制了采样点的数量,先看下该类的主要成员变量:
|
采样点的结构比较简单,仅包含三个成员变量:
|
然后看下新的采样点是如何加入的:
|
最后看下预测部分的逻辑:
|
总结:exoplayer的核心思想就是使用滑动窗口对带宽进行预测。个人认为目前的计算方式有两点问题:1、目前的滑动窗口大小取决于数据量的大小,不能很好地确保采样点间的时间相关性;2、最终预测时将采样点列表按照下载速度排序,再一次弱化了时间相关性,暂时只能理解为exoplayer选择了较为保守的中值策略。
VLC
VLC的带宽预测同样使用了滑动窗口的思想,其主要逻辑位于MovingAverage.hpp中:
|
总结:VLC同样使用滑动窗口对网络带宽进行预测,预测算法中侧重于网络波动的影响,也淡化了时间的概念。(改进的指数移动平均)
播放器网络带宽预测方法相关推荐
- 小米路由器怎么连接无盘服务器,播放器+服务器的方法瞬间玩转小米路由方法图文介绍...
"厨具":小米路由及其外接硬盘.安卓手机.威动播放器(VidOn Player).威动服务器(VidOn Server) "食材":冰雪奇缘.生活大爆炸 用两种 ...
- 一种多功能语音识别技术和音乐播放器相结合的方法
一种多功能语音识别技术和音乐播放器相结合的方法 [专利摘要]本发明一种适用于一种多功能语音识别技术和音乐播放器相结合的方法,本发明将语音识别用于音乐播放器上.将音乐播放器改为语音控制型的,可以减少硬件 ...
- html做全景视频播放器,一种全景视频播放方法及播放器的制造方法
一种全景视频播放方法及播放器的制造方法 [技术领域] [0001]本发明涉及视频播放领域,尤其涉及一种全景视频播放方法及播放器. [背景技术] [0002]随着近年来视频拍摄技术的发展,全景图片.全景 ...
- Ubuntu 下 FireFox( 火狐 )无法使用HTML5播放器的解决方法
Ubuntu 下 FireFox( 火狐 )无法使用HTML5播放器的解决方法: ubuntu自带的火狐没有视频播放器,可以不用下载flash(即将不支持),现在国内许多视频网站(B站等)都支持HTM ...
- kodi pvr 不能安装_「家庭影音串流」电视最强播放器KODI使用方法
本文作者:空翻的帕兹 文章适用电脑手机等全平台设备,在用户没有nas的情况下如何使用串流 电视最强播放器KODI Kodi是由XBMC基金會開發的開源媒體播放器,原名XBMC(最後一個以XBMC命名的 ...
- qq播放器免费的方法
没有网哪有痛 没有爱哪有痛 当网成为痛的根由 当爱成为一种毒素 我无法借掉对网的迷惑 也无法逃避这爱的旋涡 第一步:登录你的QQ空间(http://Q-zone.qq.com/web),首 ...
- win10系统专用DVD播放器安装的方法--win7w.com
win10系统性能稳定受到广大用户的喜爱,但也不尽完美,在使用过程中,难免会遇到win10系统专用DVD播放器安装的问题.碰到win10系统专用DVD播放器安装的问题.很多用户不知道win10系统专用 ...
- windows media player控件播放器属性及方法使用
wmp 9.0控件常见属性和方法 [基本属性] URL:String; 指定媒体位置,本机或网络地址 ui Mode:String; 播放器界面模式,可为Full, Mini, None, Invis ...
- android调用音乐播放器,三种方法
小弟想请问一下,如何在自己写的程序中调用系统的音乐播放器呢. 我在google上搜索了,主要是有两种方法,但是都不是我想要的. 第一种是,使用mp3音乐文件的uri,和intent,进行调用,但是这种 ...
最新文章
- 深度学习的分布式训练--数据并行和模型并行
- R语言构建logistic回归模型并评估模型:计算混淆矩阵、并基于混淆矩阵计算Accuray、Precision、Recall(sensitivity)、F1、Specificity指标
- java使用数据库连接池连接MySQL/MariaDB--DBCP2
- Win 7 隐藏小功能——屏幕录制
- Confluence 6 针对 'unmigrated-wiki-markup' 宏重新尝试合并
- 幼儿园 php,input.php
- 基础算法 —— 高精度计算
- Python里面使用的容器
- php练习——打印半金字塔、金字塔、空心金字塔、菱形、空心菱形
- android移植jdk,重装windows后移植jdk和Android Studio
- 基于centos的FasfDFS安装配置
- 利用predis操作redis方法大全
- python能不能自动写代码_微软最强 Python 自动化工具开源了!不用写一行代码!...
- 华为WATCH D血压管理计划怎么用
- 整数幂C语言1005,zzuli1005: 整数幂 - 菜鸟头头
- Helio P10 (MT6755)
- HDU - 5894 hannnnah_j’s Biological Test 组合数(插板法)
- 影院电影售票管理系统
- jmeter压测指南
- python爬取《你好, 李焕英》豆瓣评论数据