How to broadcast multiple audio tracks with SRT (and OBS Studio)

Clevercast allows you to send an SRT broadcast with an audio track for each language. The SRT protocol is reliable for broadcasts over unreliable networks and very long distances. It may contain multiple audio tracks (of which the number depends on your encoder).

There are many encoders that support SRT. OBS Studio also supports SRT multi-track broadcasting through its Custom FFmpeg Record output. Since OBS Studio only you to configure six tracks, you can use it to broadcast 6 languages to Clevercast.

Note that Clevercast also allows you to broadcast multiple audio channels using RTMP surround sound and also has its own Translate at Home protocol to allow realtime translation in the browser.

 

1. Set up your multilingual event

In Clevercast, an Event is used as name for a live stream. To start a new multilingual live stream, go to the event overview page. Click on the Create Multilingual menu on the left side of the screen.

A popup dialog will be displayed, select:

  • Enter the name of your live stream
  • Select SRT Listener (= in most cases, also if you’re using OBS Studio) or SRT Caller (= only if your encoder acts as the listener) as the ‘Broadcast Protocol’.
  • Select your broadcast’s original language as the ‘Default Language’. If your floor audio contains multiple languages, you can select Original instead of a language.
  • Press the ‘Create’ button

A multi-language event will be created. You can now add the additional language(s) that you will be broadcasting. Go to the Advanced panel at the bottom of the page and select the Additional Languages you need. The number of languages you can select depends on your Clevercast plan.

In the Advanced Panel also make the following changes:

  • Set Languages per Track to 1 if each track contains a single language. (Advanced: set it to 2 if you have an encoder that supports stereo tracks (eg. Intino, Makito X) and you are using the stereo to pan 2 languages L+R)
  • Set your SRT Passphrase: this must consist of 16 alphanumeric characters.

Passphrase, languages per track, and language selection of an SRT Listener in Clevercast.

 

2. Audio Input and OBS Studio settings

The Broadcast panel on the left of your Event page in Clevercast will contain the order of the languages. Make sure your input sends the languages to your encoder in the same order. Your encoder (eg OBS Studio) must send the same number of tracks as the number of languages in Clevercast.

Specific for OBS Studio, use option 2 in this OBS Studio guide to configure the audio tracks. This guide contains the instructions to configure the Custom FFmpeg Recording output. To configure this tab, you will also need some information from the Clevercast event page.

Output settings for an SRT Caller in OBS Studio when broadcasting 1080p to Clevercast.

Output settings for an SRT Caller in OBS Studio when broadcasting 720p to Clevercast.

Go to OBS Studio’s Output menu, select the Advanced ‘Output Mode’ and go to the Recording tab. Configure this tab as follows:

  • In the Type dropdown, select Custom Output (FFmpeg)
  • In the FFmpeg Output Type dropdown, select Output to URL
  • In the File Path or URL box, type the URL of the SRT Caller (you need data from Clevercast for constructing the URL, see below)
  • In Container Format dropdown, select mpegts.
  • Muxer Settings type mpegts_start_pid=0x021 mpegts_pmt_start_pid=0x20
  • Select a Video Bitrate that is in accordance with your connection and encoder resources.
  • As Keyframe interval (frames) set 50 (if your framerate is 25 FPS, recommended) or 60 (if your framerate is 30 FPS)
  • As Video Encoder select libx264
  • As Audio Bitrate set 128 Kbps (or more in special circumstances)
  • Check the number of Audio Tracks that corresponds with the total number of languages in Clevercast
  • As Audio Encoder select aac

To construct the SRT Caller URL, you need data from the Advanced and Broadcast panels of your Clevercast event. Here is an example of an SRT Caller URL:

srt://213.163.93.140:17001?mode=caller&port=17001&latency=2000000&passphrase=vrslcopmdacrpxdq&pbkeylen=16

The URL scheme is srt:// followed by the IP address and Port of the SRT listener, which can be copied from the Broadcast Panel (or Backup Broadcast panel) in Clevercast.

The SRT Caller URL requires 5 query-string arguments:

  • The mode argument should be set to caller
  • The port argument should be set to the Listener port (= same port as in the first part of the URL)
  • The latency argument should preferably be set to 2000000 (= 2 seconds)
  • The passphrase argument can be copied from the Advanced panel in Clevercast
  • The pbkeylen argument must be set to 16 (= length of your passphrase

Make sure to configure the other Video and Audio settings in OBS in accordance with our broadcasting guidelines.

 

3. Test your broadcast

Before you start your encoder, press the Change Event Status button in Clevercast and select ‘Preview Broadcast’. This will start server-side processing of your stream, required for the SRT listener to start.

Then start OBS by pressing the Start Recording button (= NOT the Start Streaming button). After about a number of seconds (latency), you will be able to see your broadcast in the Preview Player. Note that the preview is only visible to you as Clevercast admin. Your viewers will not be able to see the video until the event is started.

Starting the SRT broadcast to Clevercast with OBS Studio.

Clevercast transmuxes and transcodes the incoming streams and delivers the result to your viewers using adaptive streaming. Press the headset menu in the preview player to change the language. Clevercast player can be embedded in your site using the embed code below the players. For a responsive embed code, press the ‘Customize’ button, select ‘Use Responsive Embed Code’ and use the Copy button in the popup dialog.

 

4. Managing the live stream

When you are ready to start the live stream, press the Start Event button: the live stream will automatically become available to your viewers in the embedded player. You will also see the stream start in the ‘Public Livestream’ player.

After you have finished broadcasting, set the Event status to ‘Ended’ or reset it to ‘Waiting for Broadcast. This will stop your consumption of server-side resources.