UbikLoadPack Video Streaming Plugin 10.0.0

on 26 November 2024 ABR-Streaming, AD INSERTION, HLS, JMETER, JMETER-PLUGINS, LL-HLS, LOAD_TESTING, MPEG-DASH, PERFORMANCE, VIDEO and Tags: , , , , , , , , , , with 0 comments

We are proud to announce the release of the major version 10.0.0 of our performance testing tool for Video Streaming servers (HLS, MPEG-DASH, HSS, HDS).

We will see in this blog the release notes of this version

New features and enhancements

Support SSAI ads insertion

The plugin comes with a new Major feature, as it now supports Server Side Ad Insertion (SSAI)

SSAI definition :

The addition of the ad is managed by STCE-35 markers which are sent as chunks upstream. The origin will process the SCTE-35 markers to communicate with the pub server using SCTE-30. It is the origin which replaces the content in the manifest according to the response from the ad server.

Impacts on stream

The plugin is now able to handle automatically HLS and DASH streams containing ads. It adapts its refresh rate, the requests to ad chunks, lag and other metrics computations and manifest parsing.

Impacts on GUI

A new checkbox is available on the GUI to indicate whether the stream contains ads, here are the impacts if the checkbox is ticked :

– HLS : adjust target duration if necessary

– DASH : stream is multi period and will perform the actions required for this type of manifest (find the right period based on the current date, for example)

Dash : Support of Multi-Period

When ads are added to a dash stream, a new period is added, the plugin now manages multiple periods. You can find an example of multi period stream here.

You can find an article about multi period from our team here.

Metrics improvements

We have added a new metric corresponding to the number of chunks skipped when the user has ticked ‘Play close to the live edge’.

Virtual threads support

The plugin now uses the virtual threads if you use JAVA 21 or higher version.

What is a virtual thread ?

The official documentation shows that a virtual thread is an instance of the java.lang.Thread type, but it does not necessarily correspond to a native operating system thread.

On the other hand, a virtual thread is always executed on an operating system thread, but once the virtual thread is blocked, it is put on hold, and the operating system’s native thread is freed up to be used by another virtual thread. Virtual threads are managed by the JVM (Java Virtual Machine).

Why use virtual threads ?

Virtual threads are used to have more threads handling tasks in applications with a large number of concurrent users. The official documentation notes that virtual threads are more appropriate for blocking operations, such as I/O operations.

In the case of the plugin, there are threads responsible for downloading chunks (I/O operations) and simulating video playback. It is therefore appropriate to use them.

Added properties

If you are not using a custom properties file, these properties will be added automatically, otherwise you must add them in your properties file.

1) The following properties have been added for new metric ulp_chunks_skipped :

jmeter.reportgenerator.graph.custom_ulp_chunks_skipped.property.set_granularity=${jmeter.reportgenerator.overall_granularity}
jmeter.reportgenerator.graph.custom_ulp_chunks_skipped.classname=com.ubikingenierie.jmeter.plugin.videostreaming.graphing. ULPCustomGraphConsumer
jmeter.reportgenerator.graph.custom_ulp_chunks_skipped.property.setSampleVariableName=ulp_chunks_skipped
jmeter.reportgenerator.graph.custom_ulp_chunks_skipped.title=Number of chunks skipped in case of play close to Live Edge
jmeter.reportgenerator.graph.custom_ulp_chunks_skipped.property.set_Y_Axis=Number of chunks skipped
jmeter.reportgenerator.graph.custom_ulp_chunks_skipped.property.set_X_Axis=Elapsed Time (granularity\: ${ULP.overall_granularity_sec}s)
jmeter.reportgenerator.graph.custom_ulp_chunks_skipped.property.setContentMessage=Chunks skipped

2) sample_variables change :

Before :

sample_variables=ulp_buffer_fill,ulp_lag_time,ulp_play_time,ulp_lag_ratio,ulp_lag_ratio_wo_bf,ulp_dwn_time,ulp_speed_rate,ulp_actual_live_offset,ulp_cdns_hit,ulp_cdns_miss

After :

sample_variables=ulp_buffer_fill,ulp_lag_time,ulp_play_time,ulp_lag_ratio,ulp_lag_ratio_wo_bf,ulp_dwn_time,ulp_speed_rate,ulp_actual_live_offset,ulp_cdns_hit,ulp_cdns_miss,ulp_chunks_skipped

3) New property to enable/disable virtual threads :

ulp_streaming.enable_virtual_threads=true

About UbikLoadPack :

Ubik Load Pack Streaming Solution features

You’ll probably also like: