直播性能测试

直播性能测试
一.直播测试涉及的技术
在一个完整的流媒体服务框架中,角色就是"两端加一服",即推流端、拉流端加上流媒体服务器,按照应用场景的不同,协议又分推流协议和拉流协议。
在这里插入图片描述
国内的面向大众的直播平台都是采用的rtmp、httpflv和hls技术:
在这里插入图片描述

二.测试方法
直播性能测试可以拆分为两种测试,流媒体测试和普通的网页测试。网页测试与一般的web页面性能测试方法一致,使用loadrunner进行测试。视频直播也会存在交互界面,即主持人与用户的互动。下面主要讲述性能测试工具和方法。

2.1 流媒体测试
2.1.1 St-load工具
该工具建议在Linux环境下使用,下面的步骤是在Linux环境中的操作。该工具也可在windows环境下使用,但是需要在windows中进行相关配置,文末放配置相关链接。

St-load工具介绍:
1.支持RTMP推流测试,一个进程支持500个并发。执行程序:
./objs/sb_rtmp_publish

2.支持RTMP拉流测试,一个进程支持5k并发。执行程序:
./objs/sb_rtmp_load

3.支持HTTP负载测试,所有并发重复下载一个HTTP文件。执行程序:
./objs/sb_http_load

4.支持HLS解析和测试,下载ts片后等待一个切片长度,模拟客户端。支持HLS点播和直播。执行程序:
./objs/sb_hls_load
安装篇

1.在linux环境下载St-load源码包

[root@test /]# git clone https://github.com/rzrobert/st-load-master.git
1
2.对源码进行编译

[root@test /]#cd st-load-master/
[root@test /st-load-master]#./configure
[root@test /st-load-master]#make
1
2
3
推流篇

1.推流前准备工作,编辑nginx.conf的RTMP层
在这里插入图片描述
2.模拟单路RTMP推流

./sb_rtmp_publish -i /usr/local/ffmpeg/cnlzd.flv -c 1 -r rtmp://127.0.0.1/live/livestream
1
在这里插入图片描述
3.模拟多路RTMP推流

./sb_rtmp_publish -i /usr/local/ffmpeg/cnlzd.flv -c 10 -r rtmp://127.0.0.1/live/livestream_{i}
1
在这里插入图片描述

插入链接与图片
链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片:Alt

居中并且带尺寸的图片:Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

常用参数说明:
-i 设定输入流
-c 负载个数,默认:1
-r 后面接每个测试的url地址,等同于 --url URL
-s 线程启动时间 defaut:5.00 0表示没有延迟
注意:sb_rtmp_publish只可以推送.flv格式的视频

拉流篇

1.RTMP
RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。

拉流:

./sb_rtmp_load -c 1 -r rtmp://127.0.0.1:1935/live/livestream
1
在这里插入图片描述
2.HTTP
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。在最新一代的超文本标识语言HTML5中,视频文件的点播,同样也采用了HTTP作为其承载协议。

拉流:

./sb_http_load -c 1 -r http://127.0.0.1:8081/live/livestream
1
在这里插入图片描述
3.HLS
HLS (HTTP Live Streaming),Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件和TS媒体分片文件。

分段策略:
HLS的分段策略,基本上推荐是10秒一个分片,当然,具体时间还要根据切片的实际时长做标注。通常来说,为了缓存等方面的原因,在索引文件中会保留最新的三个分片地址,以类似“滑动窗口”的形式,进行更新。

m3u8文件:
m3u8是HTTP Live Streaming直播的索引文件。m3u8基本上可以认为就是.m3u格式文件,区别在于,m3u8文件使用UTF-8字符编码。

#EXTM3U m3u文件头,必须放在第一行
#EXT-X-MEDIA-SEQUENCE:7 第一个TS分片的序列号
#EXT-X-TARGETDURATION:15 每个分片TS最大时长
#EXTINF:15.099 extra info分片TS的信息
在这里插入图片描述
HLS拉流:

./sb_hls_load -c 1 -r http://127.0.0.1:8081/hls/livestream/index.m3u8
1
2.1.2 flazr工具
简述:通过推流软件推送摄像头视频流到nginx流媒体服务器,获取nginx流媒体服务器上的视频流,在windows下使用flazr软件进行压力测试。
1)flazr-0.7-RC2下载地址:百度网盘 提取码:nu05
2)windows下执行过程,解压后的图片:
在这里插入图片描述
3)运行cmd,进入解压后的文件夹,cmd命令如下:

.\client.bat rtmp://zhibo.jinlu666.com:1935/zhibo/jinlu76 -load 10
1
PS:执行client.bat文件,后跟rtmp流,参数:-load 10 ,10指的是并发路数,如果改成100,即并发100路数。如下图:
在这里插入图片描述
2.2 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这些数据传输速度是我们所关注的点,我们做的是性能测试,功能测试关注点和性能测试所关注的有所不同。性能测试之前首先要确认测试环境的网络带宽,直播服务器推流的码率,帧数,交换机的带宽等一系列数据,获取这些数据后我们可以推算在此网络下我们能支持的并发数量,满足多少用户能够观看视频直播。
以上内容仅限于我按照自己的理解搜集整理,方便自己学习,欢迎大神指正。
参考链接:

视频直播平台性能测试:
https://www.cnblogs.com/fy–/p/10983049.html

RTMP和HLS流媒体直播压力测试:
https://www.jianshu.com/p/5feb4d471ece

基于python+ffmpeg的视频并发直播压力测试:
https://blog.csdn.net/u011881908/article/details/50944555

nginx rtmp 视频流服务器直播测试:
https://blog.csdn.net/wanggao_1990/article/details/81591589

流媒体压力测试rtmp&hls(含推流和拉流):
https://blog.csdn.net/sinat_34194127/article/details/50816045

HTTP/HLS/RTMP超级负载测试工具
https://blog.csdn.net/zhangjiarui130/article/details/54316730

流媒体压力测试工具—推拉流:
https://blog.csdn.net/ai2000ai/article/details/83000478

windows下flazr对rtmp视频流进行压力测试(批量直播测试):
https://www.cnblogs.com/zkfopen/p/10114593.html

Windows系统安装 gcc/g++、gdb、make等工具
https://blog.csdn.net/Night1ngale/article/details/82534576?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值