Skip to main content
5G Media Streaming (5GMS)

5G MSd End-to-End deployment with 5G Network

In short

This tutorial allows to: Deploy 5G Media Streaming with a 5G Network and COTS UE.

This guide describes how to setup and configure the Reference Tools to create an end to end setup consisting of the 5G Downlink Media Streaming components and a 5G Network based on Open5GS (the 5G core network) and srsRAN (the Radio Access Network, RAN).

What you will build: the same end-to-end 5GMSd deployment as the Docker end-to-end tutorial, but with the stream delivered over a real 5G Network to a commercial off-the-shelf (COTS) User Equipment (UE) rather than over the local network.

Prerequisites

This tutorial reuses the server-side and client-side setup from the basic end-to-end guide; complete that first. The only 5G-specific difference is that you point the ingestURL in your streams.json at your own local webserver (see Step 6 below), and you run the whole setup over the 5G Network described next.

5G Network with COTS UE setup

To setup the 5G Network and connect a COTS device please refer to the corresponding documentation.

5G Media Streaming setup

Server-side setup

Step 0: Using a local server (Skip if your content is hosted in the internet)

Install the express.js webserver

The express.js webserver acts as a local CDN for unicast delivery. Installation instructions are in its repository:

simple-express-server Acts as a local CDN, serving the transcoded HLS/DASH output over unicast.

Configure ffmpeg

First, configure the ffmpeg output. Navigate to flute-ffmpeg/files and open ffmpeg-hls.sh or ffmpeg-dash.sh depending on the output format you want to create. Change the following two lines and point them to the path of the local webserver installed previously. If there is no watchfolder/hls or watchfolder/dashfolder on your webserver yet create that as well.

-hls_segment_filename /home/dsi/5gmag/simple-express-server/public/watchfolder/hls/stream_%v_data%02d.ts \
-var_stream_map "v:0,a:0" /home/dsi/5gmag/simple-express-server/public/watchfolder/hls/stream_%v.m3u8

Run ffmpeg and the express.js webserver

Navigate to flute-ffmpeg/files and run sh ffmpeg-hls.sh or sh ffmpeg-dash.sh.

Start the express.js webserver

Run npm start in simple-express-server. The files created by ffmpeg are now hosted and available via unicast. Try to query the master manifest to check for the availability of the files. A successful response returns the HLS master playlist, as shown below:

curl http://192.168.11.1:3333/watchfolder/hls/manifest.m3u8
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-STREAM-INF:BANDWIDTH=2305600,RESOLUTION=1280x720,CODECS="avc1.64001f,mp4a.40.2"
stream_0.m3u8

Step 1: Install the Application Function

For details please refer to the corresponding section in the basic end-to-end guide.

Step 2: Install the Application Server

For details please refer to the corresponding section in the basic end-to-end guide.

Step 3: Start the Application Server

For details please refer to the corresponding section in the basic end-to-end guide.

Step 4: Basic Configuration of the Application Function

Follow the basic configuration steps documented in the basic end-to-end guide.

Step 5: Start the Application Function

Follow the command documented in the basic end-to-end guide.

Step 6: Create a Content Hosting Configuration and Provisioning Session

Follow the steps to create a content hosting configuration and a provisioning session using the msaf-configuration tool.

Note that you need to point the ingestURL of your streams.json to the URL of your webserver.

Client-side setup

With the server-side set up, focus shifts to the client side.

Step 1: Installation, Configuration and Running the 5GMSd Client

Please follow the instructions documented in the basic end-to-end guide setup guide.

You now have the 5GMSd deployment running end-to-end over a real 5G Network. The stream travels from your Application Function and Application Server, through the Open5GS core and srsRAN RAN, to your COTS UE.

Next steps