Java 用JMeter测试HLS
我正在使用JMeter从流媒体服务器测试HLS播放。因此,第一个HTTP请求是主清单文件(m3u8)。说 对此的回复将生成一个播放列表,类似Java 用JMeter测试HLS,java,regex,jmeter,http-live-streaming,Java,Regex,Jmeter,Http Live Streaming,我正在使用JMeter从流媒体服务器测试HLS播放。因此,第一个HTTP请求是主清单文件(m3u8)。说 对此的回复将生成一个播放列表,类似 subsubFolder/360p/file1.m3u8 subsubFolder/480p/file1.m3u8 subsubFolder/720p/file1.m3u8 因此,下一组URL将成为 http://myserver/application1/subpath1/subsubFolder/360p/file1.m3u8 http://myse
subsubFolder/360p/file1.m3u8
subsubFolder/480p/file1.m3u8
subsubFolder/720p/file1.m3u8
因此,下一组URL将成为
http://myserver/application1/subpath1/subsubFolder/360p/file1.m3u8
http://myserver/application1/subpath1/subsubFolder/480p/file1.m3u8
http://myserver/application1/subpath1/subsubFolder/720p/file1.m3u8
现在,对这些进一步的单独回复将是块的索引,如
0/file1.ts
1/file1.ts
2/file2.ts
3/file3.ts
同样,我们还有下一组URL
http://myserver/application1/subpath1/subsubFolder/360p/0/file1.ts
http://myserver/application1/subpath1/subsubFolder/360p/1/file1.ts
http://myserver/application1/subpath1/subsubFolder/360p/2/file1.ts
http://myserver/application1/subpath1/subsubFolder/360p/3/file1.ts
这只是一套(360p)的情况。还有两套类似的(480p和720p)
我希望在这之前,需求声明是明确的。现在,问题陈述。 使用
作为静态部分,regex(+?).m3u8在第一次回复时应用,给出子路径1/subsubFolder/360p/file1
。然后再次将其添加到静态部分,以获得+.m3u8
问题将在下一阶段出现。正如你所看到的,对于之前提取的部分,我得到的只是
http://myserver/application1/subpath1/subsubFolder/360p/file1/0/file1.ts
问题很明显,一个额外的文件1,360p/file1代替了360p/0
任何建议、输入或替代方法都值得赞赏。如果我正确理解了这个问题,您所需要的只是文件名,因为其他URL都可以用它来构造。而不是使用
http://myserver/application1
作为正则表达式的静态部分,我会尝试直接获取文件名:
([^\/.]+)\.m3u8$
# match one or more characters that are not a forward slash or a period
# followed by a period
# followed by the file extension (m3u8)
# anchor the whole match to the end
现在考虑你的URL,例如<代码>http://myserver/application1/subpath1/subsubFolder/360p/file1.m3u8,上面的正则表达式将捕获文件1
,请参见此处的。现在您可以构造其他URL,例如(伪代码):
这就是你想要的吗?如果我正确理解了这个问题,你所需要的只是文件名,因为其他URL都可以用它来构造。而不是使用
http://myserver/application1
作为正则表达式的静态部分,我会尝试直接获取文件名:
([^\/.]+)\.m3u8$
# match one or more characters that are not a forward slash or a period
# followed by a period
# followed by the file extension (m3u8)
# anchor the whole match to the end
现在考虑你的URL,例如<代码>http://myserver/application1/subpath1/subsubFolder/360p/file1.m3u8,上面的正则表达式将捕获文件1
,请参见此处的。现在您可以构造其他URL,例如(伪代码):
这就是你想要的吗?确保你使用:
-作为正则表达式(在正则表达式中将加号改为星号)(.*)
-作为匹配号-1
-作为模板$1$
-作为正则表达式(在正则表达式中将加号改为星号)(.*)
-作为匹配号-1
-作为模板$1$
有关详细说明,请参阅文章 如果您准备购买一个商业插件,那么有一个简单且更现实的解决方案,即UbikLoadPack提供的Apache JMeter插件: 除了为您执行此操作外,它还将模拟玩家读取文件的方式。它的伸缩性也比任何自定义脚本或播放器解决方案都要好。 它支持视频点播和直播,这是相当困难的脚本 见:
免责声明,我们是此解决方案的提供商如果您准备支付商业插件的费用,那么有一个简单且更现实的解决方案,即UbikLoadPack提供的Apache JMeter插件: 除了为您执行此操作外,它还将模拟玩家读取文件的方式。它的伸缩性也比任何自定义脚本或播放器解决方案都要好。 它支持视频点播和直播,这是相当困难的脚本 见:
免责声明,我们是此解决方案的提供商否,仅文件名是不够的,因为子路径或子子文件夹部分也可能/将发生更改。问题在于递增地追加从每个请求获得的回复中获得的路径。我不想手动创建它们,因为数字不是固定的。那么你能给出一个更真实的文件路径的例子吗?在你的驱动器上考虑一个电影的结构。第一级可能是对语言进行分类。第二种可能是体裁。因此,您将拥有URL
language1/genre1 language2/genre1 language3/genre1
这不是一个具有固定应用程序路径的web应用程序。这适用于媒体服务器,其中路径表示实际映射的路径。不,仅文件名是不够的,因为子路径或子子文件夹部分也可能/将发生更改。问题在于递增地追加从每个请求获得的回复中获得的路径。我不想手动创建它们,因为数字不是固定的。那么你能给出一个更真实的文件路径的例子吗?在你的驱动器上考虑一个电影的结构。第一级可能是对语言进行分类。第二种可能是体裁。因此,您将拥有URLlanguage1/genre1 language2/genre1 language3/genre1
这不是一个具有固定应用程序路径的web应用程序。这与媒体服务器有关,其中路径表示实际映射的路径。
http://myserver/application1/subpath1/subsubFolder/360p/ + filename + .m3u8
http://myserver/application1/subpath1/subsubFolder/360p/ + filename + /0/ + filename + .ts