HLS 流媒体性能测试

HLS 流媒体性能测试是为了确保流媒体服务的性能和可靠性而进行的测试。HLS 是苹果公司开发的一种流媒体传输协议,它可以在网络环境差的情况下,保证视频的稳定播放。

在进行 HLS 流媒体性能测试之前,需要准备好测试环境,包括测试用的视频文件、测试服务器以及测试客户端。

测试流程如下:

  1. 在测试服务器上搭建流媒体服务,并将测试用的视频文件上传到服务器上。
  2. 在测试客户端上使用 HLS 播放器打开测试视频。
  3. 观察视频播放是否流畅,是否出现卡顿、花屏等现象。
  4. 测试不同网络环境下的视频播放效果,包括带宽较低、网络延迟较高等情况。
  5. 对测试结果进行分析和总结,发现问题并进行修复。

通过 HLS 流媒体性能测试,可以发现流媒体服务中存在的问题,从而对其进行优化和改进,提高用户的使用体验和服务质量。

HLS 协议提供了一种可靠、经济实惠的方式,在互联网上传输连续的和长格式的视频。它允许接收者根据当前的网络条件,调整媒体的比特率,以维持最佳质量的不间断播放。

类似地,为了支持视频流和视频点播的更广泛协议,插件还自动识别 MPEG-DASH 链接,无需在界面中指出,支持使用预定义分辨率和带宽下载清单和片段。

本文以JMeter流媒体插件BlazeMeter - HLS Plugin为例。

在 HTTP直播进程中

  • 需要通过媒体编码器以不同的质量级别、比特率和分辨率来重现要流式传输的音频/视频。每个版本称为变体(variant)。
  • 不同的变体被拆分成较小的媒体段文件。
  • 编码器为每个变体创建一个媒体播放列表,其中包含每个媒体段的 URL。
  • 编码器使用每个媒体播放列表的 URL 创建一个主播放列表文件。为了播放,客户端首先下载主播放列表,然后下载媒体播放列表。然后,它们播放所选媒体播放列表中声明的每个媒体段。客户端可以重新加载播放列表以发现任何添加的媒体段。例如,直播活动的情况。

请注意,自动识别 HLS 协议是基于主播放列表链接的 URL 扩展名的要求,它必须具有 ".m3u8"。

在动态自适应流媒体传输过程中:

  • 编码器创建包含所有 Periods、Base URLs 和适应集的清单,用于进行过滤,基于分辨率、带宽和语言选择器。
  • 插件编码为按顺序下载每个所选适应集的片段,而不是并行下载。
  • 插件将基于 MPD 的timeShiftBufferDepth属性更新清单。

请注意,就像 HLS 一样,该协议的识别基于清单的 URL,它应该包含 ".mpd"。在某些情况下,它不符合该要求,url 不包含 ".m3a8",那么它也将被视为 MPEG-DASH。

插件如何工作

概念

JMeter的HLS流媒体插件在内部解决了 HLS 的复杂性。它获取主播放列表文件,选择一个变体并获取其媒体播放列表文件、片段等。该插件模拟用户在支持不同情况的 HLS 上消耗媒体的情况:流类型、播放时间、网络带宽和设备分辨率。

对于 MPEG Dash,同样的操作。它从 url 获取清单文件,根据可用性、流类型、播放时间、网络带宽和设备分辨率选择媒体、音频和字幕自适应集。

以下是采样器界面:

 

 

创建测试

  • 从插件管理器中安装 HLS 插件。
  • 创建一个线程组。
  • 添加 HLS 采样器 添加 -> 取样器 -> bzm - Streaming Sampler

之后,可以添加断言、监听器等。

 

 

HLS 采样器配置

主播放列表 URL

设置主播放列表文件的链接。

 

 

协议

设置想要测试的协议,或者让插件自动检测。

 

 

持续时间

将播放时间设置为整个视频或某个时间段的秒数。

 

 

音频和字幕轨道

指定是否要使用语言代码或名称(例如 fr 或 french)为特定的备用音频或字幕轨道下载。

 

 

带宽

选择要用于选择特定视频变体的带宽标准。

 

 

分辨率

选择要用于选择特定视频变体的分辨率标准。该插件会将带宽标准视为更重要,除非将分辨率设置为自定义值且未设置带宽。

 

 

恢复视频下载

指定是否要在之间恢复播放。如果使用默认值,则插件将在每次迭代时从流的开头重新开始播放。

 

 

结果

设置监听器来评估测试结果。查看结果树监听器显示了 HLS 采样器的结果,它将显示每个示例以及相关类型(主播放列表、媒体播放列表或视频片段),调试成功了。

 

 采样器将自动添加一个名为 X-MEDIA-SEGMENT-DURATION 的 HTTP 响应标头,其中包含以秒为单位(以小数表示法)的媒体段持续时间。稍后可以使用此值执行分析,将其与相关样本中花费的时间进行比较。

 

 

查看结果树监听器显示了具有关联类型(清单、媒体、音频和字幕的初始和片段)的结果样本,以便轻松识别它们。

断言和后处理器

该插件支持添加断言和后处理器,以匹配任何潜在类型的样本结果(主播放列表、媒体播放列表、媒体片段、音频播放列表、音频片段、字幕、字幕播放列表和字幕片段)。要添加与特定结果匹配的断言或后处理器,只需使用样本结果类型后缀-加上它应该断言或后处理的样本结果类型。

以下是仅适用于媒体片段的断言示例:

 

 

如果要求断言适用于所有生成的样本结果,则只需使用不包含样本结果类型后缀的任何名称。

注意: 断言和后处理器不会对子结果(如重定向子样本)起作用。在断言和后处理器上选择要应用于的样本(主/子样本)将不起作用。

停止/关闭按钮

当你点击“关闭”按钮时,你可能需要等待相对较长的时间,直到测试计划实际停止。这可能是由于该按钮的行为,即等待当前样本结束,而HLS采样器可能需要相对较长的时间来完成对URL的采样,这取决于指定的播放时间和使用的播放列表类型。例如,如果你设置了一个直播流URL并指定播放整个视频,则它永远不会结束,关闭也不会停止它。

相反地,当按下“停止”按钮时,当前样本将被中断(并生成失败的样本结果),测试计划会立即停止。

posted @ 2023-03-04 14:46  MaxYong  阅读(336)  评论(0编辑  收藏  举报