Load testing MPEG-DASH Video Streaming with Apache JMeter and UbikLoadPack

on 12 September Apple HTTP Live Streaming, AWS, AZURE, DEVOPS, HLS, JMETER, JMETER-PLUGINS, LOAD_TESTING, PERFORMANCE, PRODUCTIVITY, VIDEO and Tags: , , , , , with 1 comment

Updated on the 7th of may 2020

The format

MPEG-DASH (Dynamic Adaptive Streaming over HTTP, ISO/IEC 23009-1:2012) is a vendor free format that is used to stream content through HTTP requests.

It is gaining popularity and its usage increases as many providers allow customers to use this format to deliver content (ie various cloud services, even Microsoft Azure platform allows its customer to use this format, with one caveat though, the url format is rather complicated, but good news, our plugin can handle those too !).

The Dashif group website has a software section that presents players (Javascript and Flash for example) and segmenters.

As such, it compares with other vendor formats like Apple HLS, Microsoft Smooth Streaming, Adobe HDS, etc…

MPEG-DASH uses playlists called Media Presentation Description that ends with .mpd extension.

The new version of our plugin, formerly called HLS Plugin is now able to handle this new format, it is now VideoStreaming Plugin.

All the features and custom metrics  described in a previous post on this blog are of course still available.

Testing this new format in Apache JMeter with our plugin is still easy as you only need to provide the url of the manifest file, the plugin will auto-detect the format used (HLS or MPEG-DASH) and will process it accordingly.

Sample Demo

First get a valid license HERE.

Execute the preliminary configuration steps :

1 – Unzip bundle

  • Unzip ulp_video-streaming-plugin-XXX.zip.
  • Copy lib/ext/ubik-jmeter-videostreaming-plugin-X.X.X.jar to jmeter/lib/ext folder

2 – Configure License

  • Put your license file in a folder of your choice, we will reference this folder as LICENSE_FOLDER, this folder must contain ubik-videostreaming-plugin.license
  • When launching Apache JMeter for the first time after the installation of the plugin, a pop up will ask for the path of the license file. Navigate to the location of your license and click on the button “Open”.

If the popup does not appear, open the user.properties file in the bin folder of your Apache JMeter installation and modify the following property:

ULP.videostreaming.licensepath=<path_to_LICENSE_FOLDER>/ubik-hls-plugin.license

3 – Use the plugin

Add a ULP Video Streaming Sampler to your test.

Now we can start a test. We’ll keep it simple and chose a playlist at :
http://dash.edgesuite.net/dash264/TestCases/1b/qualcomm/2/MultiRate.mpd

In the “Play options” panel, choose play only part of videos and enter 60 seconds for example.

In network options leave auto or choose a bandwidth you would like to test. You can also select a network type among many presets.

In the “Reporting options” panel you can choose to set the frequency at which the VideoStreamingSampleResult will be generated. Its default value is 60seconds, but here set it to 30 so that one is also generated during the test.

Add a listener to your test, a view result tree for example (Right-click your test –> Add –> Listener –> View Result Tree).

Finally click the green play button in the bar above.

If you chose 60seconds like we did, after that duration, you should be able to see your results in the View Results Tree.

You can see the manifest has been downloaded with several video chunks. And the VideoStreamingSampleResult has been generated twice and it provides useful custom metrics.

The response time of the VideoStreamingSampleResult is the sum of the response time of each chunks and manifests downloaded during the period set in the VideoStreamingSampleResult frequency field.

Have a look at the metrics and have fun !

So, enjoy this new possibility in UbikLoadPack VideoStreaming Plugin.

Several JMeter test cases (.jmx files) are provided in the plugin bundle, including for Mpeg-Dash.

Come and give it a try, the trial is still free.

About us:

Ubik Load Pack is a JMeter based solution for complex protocols.
– Follow us on Twitter and StackOverflow.
– Follow Apache JMeter on Twitter

1 Comment

    Comments are closed.