Split ABR Encoding with Appliances

Feb 2019

Note

This document is for using split encoding when you have appliances (boxes with Controller and EL) for distributed/compact instructions, please check here.
As of v11 (v11.0.1.4) it is possible to do Split ABR Encoding using both IP TS and SDI inputs.

Overview

When encoding ABR Profiles, there can be times when the number and complexity of profiles exceeds the capabilities of a single server, for example:

3840x2160p50@20Mbs
1920x1080p50@6Mbs
1920x1080p50@3Mbs
1280x720p50@2Mbs
1280x720p50@1.5Mbs
720x576p50@1Mbs
544x576p50@800Kbs
384x576P50@300Kbs

This profile list could not be produced by a single server (at the time of writing) and so two or three servers might be required, but as this is ABR, and all the profiles need to be I-Frame aligned, we need a way to achieve this.
To overcome this we can use Split ABR encoding, where we can use several servers to encode different parts of the profile list, but still aligned in time. For this to work we need the following:

Requirements

Servers must be time synchronised

A multicast is used for synchronisation, if using the MGMT port the MGMT switch must support multicasts.

Interfaces on all servers must be identical in name and operation (so if eth1 is the IP input, all servers must use the name eth1 for the interface, and it must be the input interface)

While it is possible to do this on appliances, it is much simpler to do this on a distributed system with a centralised Controller

This guide assumes you know how to create a standard ABR output service

Configuration

General Tab

On the PRIMARY Encoding Live Add a new service as normal.
Set the following in your new Service:
Name (SplitABRDemo in this example)
Synchronization
Select Activate
Mode All
Network Interface for sync (eth0) (normally management interface) (switch has to support multicasts)
Address (239.1.1.1) (unique address for sync messages)
Port 1234
Server Variant Configuration
You can think of server variants as groups. Normally we would use something like UHD, HD and SD
Add two or three variants (HD and SD in this example)

Input Tab

There is nothing special to set on the input tab, just configure this as you normally would, either SDI or IP input will work.

Encoding Tab

Again this is fairly standard, couple of things to look out for:
General Parameters Export Type Internet TV
Video Encoding Create your desired UHD/HD/SD profiles (all of them, not just the ones for this server)
Audio Create your desired audio config
Create any other configs such as subtitles etc.

Output Tab

Create your General and Common MPEG-2 TS parameters as you normally would.
Now you can start to add your outputs, these are the same as you would normally do, but with one exception, you have to configure an extra field called Subset.
The Subset names come from the Server variant configuration names set earlier in this process (under the General Tab).

Advanced Parameters Tab

We need to add one Advanced Parameter, under the Advanced Parameters tab click Add.
Parameter name synchronizer.poolname.prefix
Value SplitABR (Can be any name you like)
Variants Tick ALL Variants

Export Configuration

Before we make any more configuration settings, we need to export the configuration. This will make setting up the other servers in the system much simpler.
From the services page, find the service you just created.
Under Services you should see your config, click the Export button to save. The file will be downloaded to your local computer (Downloads folder if you are using Windows).
Locate the file you just downloaded.
The exported config file is a .json file, its plain text to easy to work with. We need to do two things with this file:
1. Make a copy (we need one file for each server we are using)
2. Edit each copy (we need to edit the UUID of the file, the UUID appears in two places in the file, remember only edit the copy(s)

Sync Alarm

If you see this alarm, or similar
Timestamps synchronization messages are not being received or are not synchronize for service=2f73015aa94040ceb39b3cbffa37d2e3;;sdt=SplitABRTest
If everything is configured okay, and you are using SDI input, SDI sync is not supported before around v10.3, so check your Encoding Live version.