文档章节

直播质量指标

Elvis_cv
 Elvis_cv
发布于 2017/05/05 17:47
字数 1520
阅读 61
收藏 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
博文 17
码字总数 46878
作品 0
广州
QA/测试工程师
虎牙数万主播同时在线直播的秘密,CDN推流日志上行实时监控

6 月 10 日,又拍云 Open Talk | 2018 音视频技术沙龙·深圳站 顺利落幕,来自虎牙的直播运维研发架构师张波在沙龙上做了《基于CDN推流日志的主播上行实时监控及其自动化解密》的分享。虎牙直...

又拍云
07/04
0
0
网心科技李浩:如何快速搭建超火爆的直播系统

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

郑小峰2583
2017/04/19
0
0
十年磨一剑,美国巨头视频网站 Hulu 的直播系统架构实践

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

雪夜凋零
06/26
0
0
基于时序数据库的直播业务监控实践

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

张观石
2017/06/28
0
0
贡献三分之一,迅雷云计算如何快速增长?

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

it168网站
2017/03/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Memcached启动参数详解

memcached -d -m 1024 -l 192.168.100.101 -p 11211 -P /tmp/memcached.pid -c 1024 -f 1.25 -n 80 -t 16 运行参数描述 -d:以守护(daemon)进程方式启动; -u:是运行Memcache的用户,例如 ......

月下狼
30分钟前
0
0
xgboost-kaggle

https://www.kaggle.com/dansbecker/xgboost This tutorial is part of the Learn Machine Learning series. In this step, you will learn how to build and optimize models with the powe......

tantexian
30分钟前
0
0
nginx学习八 代理服务

最常用的语法 proxy_pass Syntax: proxy_pass URL;Default: --Context:location.if in location,limit_exception 反向代理 例:/etc/nginx/conf.d/default.conf 反向代理(代理服务端)......

Romanceling
38分钟前
0
0
npm ERR! Unexpected end of JSON ...

npm install 报错: npm ERR! Unexpected end of JSON input while parsing near '..."^2.8.14"},"_hasShrin' npm ERR! A complete log of this run can be found in: ... 打开终端 命令: 第......

大_侠
42分钟前
0
0
Android中的设计模式之责任链模式

参考 《设计模式:可复用面向对象软件的基础 》5.1 Chain of responsibility 职责链 对象行为型模式 《Android源码设计模式解析与实战》第9章 使编程更有灵活性--责任链模式 意图 使多个对象...

newtrek
45分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部