Skip to content

Latest commit

 

History

History

Video-Streaming

Adaptive Video Streaming

Since we run 7 different ABR algorithms over many traces (both 4G and 5G) sequentially, it will take longer than 24 hours to finish all the experiments. Hence we provide a screencast of running a subset of the traces to illustrate how the video emulation testbed works. We also provide the full results and ploting scripts (see the Generating Plots section) for the figures in the paper.

To view the screencast, just click the corresponding link.

Screencast Description Viewing time Link to Screen cast
Full experiments (w/o GUI, in terminal) Perform all experiments using a subset of traces (~20%) in a bash terminal (using virtualdisplays) 11 h Link
An illustration example (w/ GUI) We enable the display to showcase how our video streaming experiments can be done by controlling the Chrome browser (with different ABR algorithms) 25 min Link

Folder Structure

Folder Name Description
ABR-5G Code for running video streaming emulation over 5G network traces. See README.md in ABR-5G folder for more details.
ABR-4G Code for running video streaming emulation over 4G network traces.
Network-Traces Contains the traces used for emulation, including the Lumos5G Verizon 4G/5G traces and throughput prediction traces.
Full-Results The full video session logs obtained from all the video-related experiments. They are used for plotting the results in the paper.

Network Trace Structure

Inside Network-Traces/, there are two sets of traces. Network-Traces/Lumos5G contains the 4G/5G throughput traces and Network-Traces/Throughput Prediction contains the predicted throughput generated by different throughput predictors.

Lumos5G Network Traces Format

The network traces obtained from Lumos5G are processed and stored in the following format: [Timestamp(s) Throughput(Mbps)] (seperated by a space).

Throughput Prediction Trace Format

The traces are in numpy (.npy) format, load the data by trace = np.load(tracefile). Then trace will be a 1D array where each element is the throughput (Mbps) at a 1 second interval.

Video Session Log Structure

The video session files inside Full-Results are the logs containing information (bitrate, stall, etc) about each video session. The name will be in the format of log_<ABR alrgoithm>_<trace_file>_<specific_setting(optional)>. Each file includes 7 fields shown below and each line represents one video chunk during the session.

Field Name Description
Timestamp (s) (column 1) The download finish time at the video chunk.
bitrate (kbps) (column 2) Bitrate of the video chunk.
buffer_length (s) (column 3) Contains the video buffer length of the session.
stall_time (s) (column 4) Stall time incurred by the chunk.
chunck_size (bytes) (column 5) The video chunk size.
download_time (ms) (column 6) Download time of the chunk.
QoE_reward (column 7) The QoE value of the chunk.

Generating Plots

We have built scripts that uses the results provided to generate the plots shown in our paper. More specifically, the scripts will generate Figure 17 and 18.

Requirements

Here are the software/package requirements. The version number in the bracket indicates the minimum version that our script has been tested on.

  • Python >= 2.7.17
  • matplotlib >= 2.1.1
  • scipy >= 0.19.1
  • numpy >= 1.16.6

To generate the figures, run bash plot-section5.sh. A plots folder should be created with the figures (.pdf, .png and .eps formats).

Evaluate Experiments on a Real Testbed

Since we perform the experiments on AWS VM instances and the price is quite high to keep them running, we have currently terminated them. If required, we can provision and provide two AWS VMs (a client-server pair) for tesing all the experiments. For setting up instructions, please refer to ABR-5G/README.md.