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

Clevercast allows you to send an SRT broadcast with one or more audio tracks, each containing one or two languages. 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).

If you only need two languages, you can send your broadcast with any SRT encoder (eg vMix). This is done by using a stereo channel, panning your languages L+R and setting the Languages per Track in Clevercast to 2. If you’re looking for example configurations for a specific number of languages or a specific encoder (vMix, Makito X), see our post on SRT support in Clevercast.

This guide explains how to send an SRT broadcast with multiple audio tracks, supported by OBS Studio and hardware encoders like Haivision Makito X and Intinor Direct Link. It explains how to set up an SRT multilingual event in Clevercast and how you can use stereo channels to double your number of languages.

This guide also explains how OBS Studio supports SRT multi-track broadcasting through its Custom FFmpeg Record output.

Please note that:

  • OBS Studio lets you configure six tracks, which allow you to produce a live stream with 12 languages
  • hardware encoders usually provide a more reliable stream, more tracks and more options. If you have a hardware encoder that supports multiple audio tracks, we recommend using it.
  • if your local network is unstable and your connection is temporarily dropped, the custom FFmpeg record output will not automatically reconnect, requiring you to press the Start Recording button again
  • if you just need 2 languages, you can also use vMix or OBS Studio’s streaming output (option 1 in the OBS manual page). In that case, pan the audio streams L+R and change the ‘Languages per Track’ setting in your Clevercast event to 2. See our post on SRT support and our Broadcasting Guidelines for more info.
  • Clevercast also allows you to broadcast multiple audio channels using RTMP surround sound and has its own Translate at Home protocol allowing remote simultaneous interpretation via 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 when each track contains a single language (mono or stereo).
  • If you are using stereo tracks to pan 2 languages L+R, make sure to set Languages per Track to 2. In this case, Clevercast will turn the stereo channels into two mono languages.
  • 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 (or half the number if you are using stereo tracks with languages panned L+R).

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
  • Set preset and x-264-params in your Video Encoder Settings. For example: preset=veryfast x264-params=vbv-maxrate=6000k:vbv-bufsize=6000k
    • The preset value depends on your CPU power. Set it to ‘veryfast’ if you have enough headroom left while active (with actual content). Otherwise use ‘ultrafast’.
    • The x-264-params value should be used to set ‘vbv-maxrate’ and ‘vbv-bufsize’ to the value of your video bitrate (eg ‘6000k’ if your video bitrate is 6000 kbps).
  • 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 (or half the number if you are using stereo tracks with languages panned L+R)
  • As Audio Encoder select aac

The SRT Caller URL can be copied from the Broadcast panel 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&inputbw=0&oheadbw=10&maxbw=0

The URL scheme is srt:// followed by the IP address and Port of the SRT listener. The following query-string arguments are being used:

  • 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 set in the Advanced panel of your event
  • The pbkeylen argument must be set to the length of your passphrase
  • The inputbw=0&oheadbw=10&maxbw=0 arguments are set to limit overhead bandwidth. If these aren’t set, SRT’s built-in error correction mechanism could cause sudden bitrate peaks, which could result in your broadcast stopping with an error (depending on your available upload bandwidth).

In OBS Studio’s Audio menu, the Audio Channels control should be set to mono (if you are sending a language per track) or stereo (if you are sending two languages per track using L+R panning).

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.