一、直播测试涉及的专业术语:html
秒开:指直播页面的首屏快速的展示出来(1S左右)。
分辨率:影响图像大小,与图像大小成正比;分辨率越高,图像越大;分辨率越低,图像越小。html5
码率: 把每秒显示的图片进行压缩后的数据量,单位为 bps(Bit Per Second)。影响体积,与体积成正比;码率越大,体积越大;码率越小,体积越小。linux
帧率:所谓的测量单位为每秒显示帧数(Frames per Second,简称:FPS)或“赫兹”(Hz)。影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。c++
清晰度:清晰度指影像上各细部影纹及其边界的清晰程度,现阶段对直播清晰度的考量仍是主要经过人眼观察。git
分辨率:能够从显示分辨率与图像分辨率两个方向来分类。显示分辨率(屏幕分辨率)是屏幕图像的精密度,是指显示器所能显示的像素有多少。图像分辨率则是单位英寸中所包含的像素点数,其定义更趋近于分辨率自己的定义。分辨率影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。github
RTMP:即Real Time Messaging Protocol,基于flash没法在iOS的浏览器里播放,实时性较好。因此通常使用这种协议来上传视频流,也就是视频流推送到服务器。web
HLS:即Http Live Streaming,是由苹果提出基于HTTP的流媒体传输协议。HLS有一个很是大的优势就是HTML5能够直接打开播放,可是延迟较大。windows
二、测试所涉及的关键点:centos
1)播放:正常播放、快进、倍速、拖拽进行播放,查看播放的流畅性、加载速度及其卡顿状况;浏览器
2)不一样网络下面的(2G\3G\4G|Wifi等网络环境下的播放状况)的播放和加载状况;
3)播放的延迟状况,对于直播,要求延迟再3秒内,最好是1秒;
4)播放过程当中切换课件、切换麦克、切换视频等;
5)播放过程当中,横屏、竖屏、互动、评价等是否正常;
6)播放开始和结束时(横竖屏)是否正常;
7)播放过程当中上课、下课、退出、进入等是否正常;
8)播放过程当中被外界打断,如电话来电、按home键等;
9)播放过程当中网络切换,2G、3G、4G、Wifi之间网络切换,或者相同网络的信号的强弱,播放是否正常、断开后网络恢复可否继续播放;
10)播放回放、缓存下载、下载完成播放、下载暂停继续下载;下载后删除再次下载;下载后重复下载等;下载后相同帐号登陆不一样的机器后,再次下载和播放是否正常;
二、直播技术
通常来讲,咱们常把视频直播的流程能够分为以下几步:
采集 —>处理—>编码和封装—>传输(推流到服务器、服务器流分发)—>播放器流播放
简单描述起来就是:主播端把音视频数据采集编码后经过网络传送到观众端,观众进行观看。视频直播就至关因而把图像数据打包,从一个地方运输到另外一个地方。咱们本次关注的就是流媒体的性能测试。
网络直播面向对象在全国各地,在网络传输方面所有本身来作基本不现实,找提供推流服务的CDN服务商提供解决方案是最好的选择,可是咱们此次测试的直播系统主要针对公司内部员工,走的内部网络,所已就不须要使用CDN技术。
在开始以前,我先把流媒体服务中的双端关系说一下。在一个完整的流媒体服务框架中,角色就是"两端加一服"。推流端、拉流端加上媒体服务器。同时按照应用场景的不一样,协议又分推流协议和拉流协议
下面介绍一下主要的直播技术,国内的面向大众的直播平台都是采用的rtmp、httpflv和hls技术:
httpflv:这种直播传输实际上就是利用的flv文件的特色,只须要一个matedata和音视频各自header,后面的音视频数据就能够随意按照时间戳传输,固然视频得按照gop段来传输,这种直播数据实际上就是一个无限大的http传输的flv文件,视频地址相似:http://live.iflytek.com/live.flv,客户端利用flv特性,能够一边接受数据边解码播放。
rtmp:rtmp是adobe研发的开放协议,rtmp其实实质上也是传输的flv格式的数据,一样是flv tag,只不过rtmp在传输上封装了一层,好比rtmp不只能够直播,也能够推流。rtmp的直播原理一样也是利用了flv文件的特性,只须要一些头信息,后面就能够随意传输音视频数据,达到边传输边播放。
hls:hls是苹果公司开发的协议,http轮询传输,该协议主要的数据格式是ts视频文件,大体就是将裸流h264和音频直播数据,切片封装成ts段,造成无数的ts小文件,客户端先请求一个m3u8文件,该文件内部会有一列ts文件的地址,客户端按照顺序依次播放ts,以此类推,hls地址相似:http:// live.iflytek.com /live.m3u8,hls在大部分的浏览器利用html5 video是能够直接播放的。
它的工做原理简单来讲就是把一段视频流,分红一个个小的基于HTTP的文件来下载。当媒体流正在播放时,客户端能够根据当前网络环境,方便地在不一样的码率流中作切换,以实现更好的观影体验HLS的出现是为了解决苹果原生环境中的流媒体播放,这个协议能够方便地让Mac和iPhone播放视频流,不依赖Adobe,
RTMP HLS HTTP-FLV三者的关系使用场景所依赖的插件延时在下表中给出
三、测试方法
上面说了那么可能是为了下面的测试方法作铺垫,视频直播性能测试能够拆分为两种测试,流媒体测试和普通的网页测试。页面就是咱们日常进行web页面性能测试使用的方法,不须要过多的阐述,固然仍是推荐使用loadrunner进行测试。视频直播也会存在交互界面,主持人与用户的互动,这个性能测试过程当中须要注意并进行测试,下面主要讲述性能测试工具和方法
3.一、RTMP和HLS压力测试工具配置安装和使用
咱们使用的测试环境是centos6.5,首先在环境中安装依赖软件包,使用git下载最新版本st-load源码包
[root@localhost ~]# yum install git unzip patch gcc gcc-c++ make
[root@localhost ~]# git clone https://github.com/winlinvip/st-load.git
执行配置和编译
[root@localhost st-load]# ./configure
[root@localhost st-load]# make
查看生成的文件和目录
[root@localhost st-load]# ls objs/
http-parser-2.1 src st_hls_load st_rtmp_load st_rtmp_publish
Makefile st-1.9 st_http_load st_rtmp_load_fast
[root@localhost st-load]#
模拟RTMP用户
./st_rtmp_load -c 1 -r rtmp://127.0.0.1:1935/live/livestream
模拟HLS直播用户
./st_hls_load -c 1 -r http://127.0.0.1:3080/hls/hls.m3u8
模拟HSL点播用户
./st_hls_load -c 10000 -o -r http://127.0.0.1:3080/hls/hls.m3u8
模拟RTMP推流用户
./st_rtmp_publish -i doc/source.200kbps.768x320.flv -c 1 -r rtmp://127.0.0.1:1935/live/livestream
模拟RTMP多路推流用户
./st_rtmp_publish -i doc/source.200kbps.768x320.flv -c 1000 -r rtmp://127.0.0.1:1935/live/livestream_{i}
支持RTMP流播放测试,一个进程支持5k并发
支持RTMP流推流测试,一个进程支持500个并发。
那么多并发前提是咱们的压力机可以知足,压力机达不到要求建议使用较少的并发,较多的压力机。
3.二、HTTP传输测试测试
LR脚本原理:测试工具服务器会一直从服务器端下载推流数据,咱们使用压力机进行压力测试,固然咱们设置的事物不会成功,咱们不须要担忧,咱们测试的是网络宽带流量。
测试代码
Action()
{
//lr_think_time(3);
lr_start_transaction("load");
web_url("mp4",
"URL=http://127.0.0.1:5021/live/2",
"Resource=0",
"RecContentType=application/octet-stream",
"Referer=http:/127.0.0.1:5021/live/2",
"Snapshot=t6.inf",
"Mode=HTML",
LAST);
lr_end_transaction("load",LR_AUTO);
return 0;
}
测试直播流的性能其实就是测试视频下载速度, rtmp hls 和http这些数据传输速度是咱们所关注的点,咱们作的是性能测试,功能测试关注点和性能测试所关注的有所不一样。性能测试以前首先要确认测试环境的网络带宽,直播服务器推流的码率,帧数,交换机的带宽等一系列数据,获取这些数据后咱们能够推算在此网络下咱们能支持的并发数量,知足多少用户可以观看视频直播。
压力工具准备,咱们此次要知足5000路并发观看720p视频,数据会以1mb/s速度传输,网络环境是万兆网络双万兆网卡,粗略估算可以知足并发数据传输。传输速度达到5000mb/s,这当固然是至关大的数据量。通常的网络和压力机是承载不了的,咱们须要较多的压力机进行负载,同时测试一台压力机的负载量。根据单台压力机的压力量进行分配压机机,好比咱们单台压力机最多能达到1000mb/s,咱们至少须要5台压力机。流量监控工具linux推荐使用iftop,windows使用自带监控,压测方法使用上述的方法。但愿上述方法可以帮助你们了解视频直播和性能测试。
原文:https://blog.csdn.net/itest_2016/article/details/80383090