文档章节

直播质量指标

Elvis_cv
 Elvis_cv
发布于 2017/05/05 17:47
字数 1520
阅读 33
收藏 0
点赞 0
评论 0

一、延迟

延迟这一指标存在于整场直播的每一个环节中,一个完整的直播包括但不限于以下环节:采集、处理、编码、封装、推流、(传输、转码、分发)、拉流、解码、播放。这些每一个环节都会导致延迟的增减,排除中间一公里必须经过的地方不提(内部优化),简单介绍两端可供优化的方面。

(1) 协议层面

RTMP协议从测试数据看,时延在CDN 端可控制在600-800ms。

(2) 推流端

推流器的主要工作流程分为采集,编码,推流三个步骤。采集,主要是指摄像头和麦克风捕获画面和声音,该过程时延由硬件设备及不同终端系统决定,性能越优耗时越短。压缩编码,为了便于视频内容的存储和传输,通常需要减少视频内容的体积,也就是需要将原始的内容元素(图像和音频)经过压缩编码,而这过程中影响到压缩编码耗时将取决于视频的各项参数,比如帧率,分辨率,H264或是H265等,通常而言帧率越大,分辨率越高则对应的编码耗时则越长。推流,这个环节主要是推流buffer 的影响,正常情况为了缓解网络波动会设置大小不等的推流buffer。业内推流端四个步骤产生的耗时会在150-200ms之间。

(3) 播放端

不管是那种播放器,播放器加载完成后,即向服务器发起视频请求,以TCP 链接建立请求,此处至少有一个RTT耗时,此过程不可避免。获取到视频数据后,首先需要填充播放器buffer,而播放器buffer的大小则直接影响到了时延的大小,目前很多客户都采用动态buffer的策略来尽可能减少对时延的影响。Buffer 填充完成后,就对接收到的数据进行解析,每种视频数据的头部信息都是不同的,根据不同的头部信息提供不同的数据包解析器进行解析,将接收到的数据解析成对应的容器类型,比如.flv,数据解析完成后再进行容器解析,也即提取图像,音频,字幕等轨道信息的过程,不同的容器类型对应不同的容器解析器,根据解析获取的图像,声音,字幕,对视频流进行解码操作。图像会有大小,声音也会有大小,如果不对图像和声音进行编码处理,对视频的传输会带来非常大的阻碍,所以传输前必须经过编码处理,因此解析完成后则是对数据进行解码。数据解码这一步,做的就是将经过编码后传输的图像轨道和声音轨道进行解码(目前市面最常见的编码格式为H264),整个解码消耗时间会根据视频的分辨率,帧率,关键帧间隔(GOP)的不同而不同,总体来说分辨率,帧率,GOP 越大,解码所需耗时越长,此外移动端解码还受手机机型影响,手机性能好则可以采用硬件解码提高效率,减少耗时。

 

二、卡顿

普遍定义buffer 为空时即为卡顿,但实际上各家定义卡顿都有细小差别,主要有些客户认为buffer为空时还不会真正被用户感知到卡顿,而是在buffer为空后200ms、500ms、1s后才被用户感知,因此若buffer为空后200ms、500ms、1s 后若依然没有数据则记为卡顿。而卡顿产生的原因一般有可归纳为以下几种:

第一、主播端或观众端本身网络问题,主播上行带宽网络问题,网络状况本身不好却非要推高码率流,或是使用小运营商带来的不稳定状况,主播端的网络问题将会导致所有观众出现卡顿。观众端的网络问题,观众端下行带宽有限,却非要观看高清甚至超清码率频,这也将必然导致卡顿率上升。

第二、资源问题,我们会为客户尽可能的提供本地资源进行覆盖,若没有本地资源则采用大区覆盖的形式提供,从测试数据上来,本地资源和非本地资源覆盖的效果相差不大,而资源层面影响卡顿的主要因素在于资源是否充足,在资源充足的情况下,非本地覆盖也同样可以达到满意的效果,也即需要确保资源充足,而不是一味的追求本地覆盖。此外,除了卡顿定义有所差别,卡顿的原因多样,卡顿率的计算方式各家也有自己的一套算法,以下介绍常见两种卡顿率计算:

(1)卡顿率=卡顿人数/在线总人数。

每分钟都上报数据,但每五分钟统计一次并且同一个设备五分钟内多次卡顿算一次,所以首先需要先对终端类型进行去重,并且去掉首次缓冲和缓冲时间小于1 秒的两种情况,记录五分钟所有的卡顿人数/当下在线总人数,每五分钟一个数据进行打点。

(2)卡顿时长占比

百秒卡顿时长=sum(buffer)*100/sum(duration)

百秒卡顿次数=sum(block)*100/sum(duration)

Buffer 为空时开始记录卡顿,开始计时直到再次接收到数据为止记录为卡顿时长,每100 秒统计一次,累加卡顿时长,在直播结束后生成一条日志并计算总卡顿时长/直播时长的占比数据。卡顿次数同理。

© 著作权归作者所有

共有 人打赏支持
Elvis_cv
粉丝 0
博文 16
码字总数 46878
作品 0
广州
QA/测试工程师
网心科技李浩:如何快速搭建超火爆的直播系统

在国内错综复杂的网络情况下,如何构建一个高并发、稳定、低延时的直播系统?在12月21日,网心科技直播技术负责人李浩做客CSDN网络公开课,为数百名技术人员现场解答关于直播系统搭建方面的一...

郑小峰2583 ⋅ 2017/04/19 ⋅ 0

十年磨一剑,美国巨头视频网站 Hulu 的直播系统架构实践

Hulu 是 2007 年在美国上市的在线视频公司,提供会员制付费视频服务,商业模式与国内的爱奇艺、优酷类似。Hulu 今年 5 月发布了最新的 OTT 电视直播应用——Hulu Live TV,目标是替代传统的有...

雪夜凋零 ⋅ 2017/08/07 ⋅ 0

基于时序数据库的直播业务监控实践

本文根据DBAplus社群第108期线上分享整理而成。 主题简介: 大家好,我是张观石,目前在虎牙直播负责直播业务运维工作。之前看到社群发了一篇href="http://mp.weixin.qq.com/s?biz=MzI4NTA1M...

张观石 ⋅ 2017/06/28 ⋅ 0

贡献三分之一,迅雷云计算如何快速增长?

  【IT168 评论】北京时间3月8日晚间,纳斯达克上市公司迅雷公布了2016年第四季度及全年未经审计财报。财报显示,迅雷2016年全年收入1.57亿美元,同比增长20.7%。作为迅雷的核心业务,会员...

it168网站 ⋅ 2017/03/08 ⋅ 0

助力「直播」风口、面向VR/AR,Powerinfo对「互动视频技术」追求

上个月中旬,波士顿动力一鸣惊人,其发布的「后空翻机器人」占据了各大媒体的头版头条,机器给人类带来的恐慌又加深了一层。也是在那个时候,清流鼎点创始人兼CTO李毅博士在Twitter上看到了一...

赵青晖 ⋅ 2017/12/29 ⋅ 0

“云上中国年” 看阿里云如何护航客户春节高峰业务

云上中国年,新春不打烊。和往年一样,2018年“云上中国年” 看阿里云如何护航客户春节高峰业务。 刚刚度过的这个春节,互联网仍旧是最热闹的地方。从多个指标来看,这个春节创下了多个互联网...

阿里云头条 ⋅ 02/26 ⋅ 0

移动直播技术秒开优化经验(七牛)@高可用架构

编者按:本文由徐立在高可用架构群分享,转载请注明来自@高可用架构。 徐立,七牛创始合伙人兼产品副总裁,负责七牛直播云的整体研发,是国内 Go / Docker / Container 技术早期布道者,Go ...

秦无炎 ⋅ 2016/10/25 ⋅ 0

秒拍副总裁陈太锋:如何通过数据分析提升有效播放量

秒拍是是国内最大的一个视频内容的制作和分发平台,目前是微博短视频的运营和合作伙伴。由于定位是PGC内容平台,所以整个产品不仅要重视观众的使用体验,也要关注内容产生者的使用体验。只有...

xrzs ⋅ 2012/12/20 ⋅ 0

给大家介绍一个好用的数据分析框架

  上次我们分享过一篇文章告诉大家四大数据分析方法,数据分析方法是当我们面对具体数据的时候所需要掌握的方法,用来挖掘数据背后隐藏的有用信息。   今天给大家分享的内容是:数据分析...

大数据头条 ⋅ 01/26 ⋅ 0

迅雷Q3财报:云计算和星域CDN表现抢眼

  【IT168 评论】11月9日晚间,迅雷发布了截至2016年9月30日的第三季度财报。财报显示,迅雷第三季度总营收4090万美元,同比增长22.1%,环比增长7.4%。营收的大幅增长得益于会员、移动广告...

it168网站 ⋅ 2016/11/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JAVA RMI

什么是JAVA RMI Java RMI (Remote Method Invocation) 远程方法调用,能够让客户端像使用本地调用一样调用服务端 Java 虚拟机中的对象方法。RMI 是面向对象语言领域对 RPC (Remote Proced...

saulc ⋅ 20分钟前 ⋅ 0

Linux系统工程狮养成记

如今的社会,随着时代的发展,出现了很多职业,像电子类,计算机类的专业,出现了各种各样的工程师,有算法工程师,java工程师,前端工程师,后台工程师,Linux工程师,运维工程师等等,不同...

linux-tao ⋅ 30分钟前 ⋅ 0

进入编辑模式 vim命令模式 vim实践

1.

oschina130111 ⋅ 30分钟前 ⋅ 0

mysql用户管理、常用sql语句、mysql数据库备份恢复

1. mysql用户管理 mysql默认有一个root超级管理员账户,实际工作环境中不可能每个人都用此root权限,防止误操作、误删除,可以给单独的用户进行授权。 Mysql创建用户以及授权: grant all on...

laoba ⋅ 30分钟前 ⋅ 0

类型后面三个点(String...)和数组(String[])的区别

类型后面三个点(String…),是从Java 5开始,Java语言对方法参数支持一种新写法,叫可变长度参数列表,其语法就是类型后跟…,表示此处接受的参数为0到多个Object类型的对象,或者是一个Obj...

流氓兔- ⋅ 36分钟前 ⋅ 0

JEPLUS表格组件之表格合并——JEPLUS软件快速开发平台

JEPLUS表格组件之表格合并 我们在列表配置时会遇见这样的一种情况,需要对个人的数据进行统一化,对一些数据进行归类,这样展示出来美观又直观,在这篇笔记中我来给大家介绍下如何配置出来专...

JEPLUS ⋅ 37分钟前 ⋅ 0

golang 并发中全局唯一操作

package main// go 携程共享 数据// 加锁解锁操作// 同步锁import ("sync""fmt")// 创建Once结构var once = sync.Once{}func computed(data *int, lock *sync.Mut...

304158 ⋅ 38分钟前 ⋅ 0

Mobx入门之二:asynchronous actions

这一节主要看mobx怎么实现asynchronous actions 1 要实现的demo功能 输入地名,查询天气,利用openweathermap api 2 思想 observable观察数据:location地点、temperature温度 observer响应式...

pengqinmm ⋅ 40分钟前 ⋅ 0

【2018.0620学习笔记】【linux高级知识 13.4-13.6】

13.4 mysql用户管理 创建用户并授权: grant all on *.* to '用户名'@'ip' identified by '密码' //all是操作权限,*.*是库.表,指定格式是'用户名'@'localhost'才能用socket登录本地 gra...

lgsxp ⋅ 今天 ⋅ 0

Java强弱引用示例

package jdk;import java.lang.ref.PhantomReference;import java.lang.ref.ReferenceQueue;import java.lang.ref.SoftReference;import java.lang.ref.WeakReference;public ......

月下狼 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部