Home

Awesome

srt-stats-plotting

<p align="left"> <a href="https://github.com/python/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a> </p>

Script designed to plot graphs out of SRT core statistics.

SRT stands for Secure Reliable Transport and is an open source transport technology that optimizes streaming performance across unpredictable networks, such as the Internet.

Requirements

To install the library dependencies run:

pip install -r requirements.txt

Script Usage

The main purpose of plot_srt_stats.py script is to visualize SRT core statistics produced during experiments by one of the testing applications like srt-xtransmit and srt-live-transmit or third-party solutions supporting SRT protocol. Depending on whether this statistics is collected on sender or receiver side, the data plotted may vary.

SRT core statistics should be collected in a .csv file. Usually, as a naming convention rule the file name ends either on "-snd" or "-rcv" depending on the side (sender or receiver) where the data was collected. Or, file name can just contain "snd" or "rcv" part in it.

Statistics filepath is passed as an argument to a script. Script usage

plot_srt_stats.py [OPTIONS] STATS_FILEPATH

Use --help option in order to get the full list of options

--is-sender   Should be set if sender statistics is provided. Otherwise, it
              is assumed that receiver statistics is provided.
--is-fec      Should be set if packet filter (FEC) stats is enabled.
--export-png  Export plots to .png files.
--help        Show this message and exit.

Usage with srt-live-transmit

For the usage with srt-live-transmit, make sure that the export of SRT statistics is enabled in .csv format. This can be done by passing the following parameters:

More information on srt-live-transmit's command line parameters can be found here.

Plots Description

Note: Megabytes and Rate plots correlation is determined by the following formula

Rate (Mbps) = MB / interval (s),

where interval is the interval indicating how frequently the statistics is collected (in seconds).

Example Plots

The script plots different charts from SRT statistics. Examples of .csv files and corresponding .html output can be found in the examples folder. For example, a chart to visualize statistics on the packets being sent, lost, retransmitted, dropped or on flight:

<img src="img/packets_1.png" alt="packets_1" style="zoom:50%;" />

The legends are interactive. You can click, e.g., on Dropped and On Flight to disable the respective plots:

<img src="img/packets_2.png" alt="packets_2" style="zoom:50%;" />

Another chart illustrates the sending rate in Mbps:

<img src="img/sending_rate_mbps.png" alt="sending_rate_mbps" style="zoom:50%;" />

Available size of the sender's buffer helps to detect if there is enough space to store outgoing data, or the source generates data faster then SRT can transmit:

<img src="img/available_snd_buffer_size.png" alt="available_snd_buffer_size" style="zoom:50%;" />