性能工具之 Jmeter 使用 HTTP 请求编写 HLS 脚本

简介: 在我们简要介绍了 HLS 协议的基础知识,接下来我们详细介绍一种使用 Jmeter 编写压测 HLS 协议脚本的方法。

一、前言

在我们简要介绍了 HLS 协议的基础知识,接下来我们详细介绍一种使用 Jmeter 编写压测 HLS 协议脚本的方法。

二、编写脚本

由于 HLS 基于HTTP,因此 JMeter 可以轻松模拟拉流,这意味着我们很容易创建测试计划。正如上篇文章提到的那样,HLS 的工作原理是将媒体源拆分为小文件(ts),然后将其分发为播放列表格式(m3u8)。因此,基本上在获取播放列表后,可以循环播放内容并下载所有文件(拉流)。

这里演示主播放列表地址为:

1、获取一级索引文件

由于整个流被分成小段,这意味着,为了保留主播放列表文件(m3u8),我们必须首先完成初始 HTTP 请求(一个执行 GET 的简单 HTTP 采样器)。请注意,每个流可以有多个播放列表(即不同的视频分辨率)。

image.png

由于主播放列表的响应提供了一个块列表(即较小的二级播放列表),因此我们将使用正则表达式后处理器将它们全部收集到一个数组中:
image.png

2、获取二级索引文件

现在我们有了“块”数组,我们需要添加一个 If Controller 非空判断:

image.png

下一步主要为获取的媒体(ts文件)列表,以便我们的“浏览器”能够进一步接收媒体内容(拉流)。这需要创建另一个 HTTP 采样器:

image.png

由于二级播放列表的响应提供了一个块列表(即所有 ts 文件列表),因此我们将使用正则表达式后处理器将它们全部收集到一个数组中:

image.png

注意:
“Match No.’”中的“ -1” 值,表示 JMeter 能够找到与特定正则表达式匹配的所有字符串。

3、拉流

现在我们有了 ts 文件列表“块”数组,我们需要添加一个 foreach-controller

image.png

该控制器了解变量“块”是字符串列表。因此,它将每次迭代的当前值放入“块”变量中。

下一步涉及获取实际的流部分,以便我们的“浏览器”能够接收媒体内容。这需要创建另一个 HTTP 采样器:

image.png

这里为了达到顺序拉流的,使用了循环计算器来做标记:

image.png

4、整体测试计划

注意这里使用 ${__P(tokenSetOnCommandLine,something)} 硬编码全局变量赋值:

image.png

5、测试结果

执行的测试结果如下:

image.png

压测 HLS 视频流的逻辑其实非常简单,先下载一级索引,它里面记录了二级索引文件的地址,然后模拟浏览器再去下载二级索引文件,二级索引文件中又记录了 TS 文件的下载地址,这样模拟浏览器就可以按顺序下载 TS 流媒体文件并连续播放,俗称“拉流”。

三、小结

由于 HLS 依赖 HTTP 协议,因此它以与其他任何协议数据流几乎相同的方式流传输视频流。它提供了极大的灵活性,因为它允许我们使用基于原生的 HTTP 的工具来测试,开发和操作在线视频。阅读此文章后,希望你现在也可以看到使用 JMete 压测 HLS 其实并不复杂。

示例脚本:

目录
相关文章
|
2月前
|
缓存 监控 负载均衡
提升HTTP动态代理IP性能的最佳实践
在现代网络环境中,HTTP动态代理IP的优化配置至关重要。通过选择合适的代理类型(正向/反向代理)、配置缓存、使用负载均衡、加强安全配置(SSL/TLS加密、身份验证)、管理日志、性能监控、限制带宽、定期更新软件和优化用户体验(减少延迟、内容压缩),可以显著提升网络性能、安全性及用户满意度。根据具体需求灵活调整配置,实现最佳效果。
210 64
提升HTTP动态代理IP性能的最佳实践
|
6月前
|
数据采集
Haskell爬虫:连接管理与HTTP请求性能
Haskell爬虫:连接管理与HTTP请求性能
|
3月前
|
定位技术 数据安全/隐私保护
如何评估HTTP代理IP的性能?
随着互联网技术的发展,使用代理IP的人越来越多。选择HTTP代理IP时,需注意速度和稳定性、用户信息保护、地域性、带宽上限、支持的协议、客户支持、用户评价和信誉、价格和性价比等方面。希望这些建议能帮助大家做出合适的选择。
82 1
|
8月前
|
SQL
常用工具类---SQL工具,HTTP工具
SQL工具,HTTP工具,两个实用小工具~~~
|
9月前
|
中间件
流量回放工具之GoReplay output-http 源码分析
【6月更文挑战5天】流量回放工具之GoReplay output-http 源码分析
115 2
|
9月前
流量回放工具之 GoReplay output-http-stats(HTTP请求统计) 源码分析
【6月更文挑战4天】流量回放工具之 GoReplay output-http-stats(HTTP请求统计) 源码分析
109 4
|
9月前
|
数据采集 Java API
Java HTTP客户端工具的演变之路
Java HTTP客户端工具的演变之路
|
10月前
|
JSON API 定位技术
.NET集成DeveloperSharp实现http网络请求&与其它工具的比较
该内容介绍了一个支持.NET Core 2.0及以上和.NET Framework 4.0及以上的HTTP请求调用方法,主要讨论了POST和GET两种形式。POST请求较为常见,涉及调用地址、发送参数、HTTP请求头和编码格式设置。文中提供了一个使用DeveloperSharp库发送POST请求的C#代码示例,用于发送短信,其中`IU.HttpPost`方法用于执行POST请求。此外,还提到了`HttpPost`方法的参数和返回值说明。最后简要提及了GET请求,通常用于URL带有查询参数的情况,并给出一个简单的GET请求示例。
|
5月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
224 3
|
2月前
|
缓存 网络协议
Jmeter如何对UDP协议进行测试?
`jmeter-plugins`是JMeter的插件管理器,用于管理和组织所有插件。访问[官网](https://jmeter-plugins.org/install/Install/)下载并放置于`lib/ext`目录下,重启JMeter后可在“选项”中看到插件管理器。
36 1
Jmeter如何对UDP协议进行测试?