前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >性能工具之 Jmeter 使用 HTTP 请求编写 HLS 脚本

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

作者头像
高楼Zee
发布2020-12-15 10:20:38
1.1K0
发布2020-12-15 10:20:38
举报
文章被收录于专栏:7DGroup7DGroup

一、前言

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

二、编写脚本

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

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

  • http://wowzaec2demo.streamlock.net/vod/definst/smil:streaming_tutorial/streaming_tutorial.smil/playlist.m3u8

1、获取一级索引文件

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

获取二级索引

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

提取列表

2、获取二级索引文件

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

非空判断

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

获取ts列表

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

提取ts列表

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

3、拉流

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

循环获取值

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

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

拉流

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

循环计算器

4、整体测试计划

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

测试计划

5、测试结果

执行的测试结果如下:

测试结果

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

三、小结

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

示例脚本:

  • https://github.com/zuozewei/blog-example/tree/master/Performance-testing/01-test-tool/jmeter/hls
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 7DGroup 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、编写脚本
    • 1、获取一级索引文件
      • 2、获取二级索引文件
        • 3、拉流
          • 4、整体测试计划
            • 5、测试结果
            • 三、小结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档