fbpx

Multi Rate HLS and DASH Setup

dt logo 1.5inchDrastic conversion and capture software support single rate and multi rate file recording and conversion.  Up to 10 different bitrate/fps/size variants are supported per multi rate output.  The actual files may be TS, MP4 or DASH/Fragmented MP4 with associated MDP and HLS files for live replay of recording files, and automatic adaptation to varying connection conditions.

Low level setup

To set up the various levels of an adaptive bit rate set for HLS or DASH, the DDRConfig Advanced tab can be used.  Run DDRConfig and select the Advanced tab.  In the config tree, go to 

/MediaReactor/PlugIns/MultiRate

DDRConfig MultiRate

Under the MultiRate key, there are 3 settings, all numeric:

  • HLSfMP4 - if set to 0, HLS will use TS (transport streams), otherwise it will use fragmented MPEG-4 files
  • TotalMultiRateFiles - the total number of files to create for each multirate output
  • UseDIrs - if this is not 0, then different rate files will each be put in their own subdirectories.  Otherwise they will be in the output directory with the M3U8

For each of the active multirate outputs, as specified by TotalMultiRateFiles, a File# key must be made, starting with File0 and going up to File# where the # is the TotalMultiRateFiles - 1.  Within each File# directory you will set up the bitrate/fps/size for that adaptation.

  • BitRateAvg - the average bit rate in kilobits per second (e.g. 5mbs == 5000kbs)
  • BitRatePeak - the highest allowable peak bit rate in kilobits per second
  • Height - the target height (ideally a multiple of the input height)
  • Width - the target width (ideally a multiple of the input width)
  • Level - the h.264 level for the target compression (e.g. 100 == 100 decimal)
  • Profile - the h.264 profile for the target compression (e.g. 4.1 == 41 decimal)
  • FPSDivisor - 1 == original frames per second, 2 == half, 3 == one third
  • AudioBitRate - AAC audio bit rate as kilobits per second (e.g. 128k == 128 decimal)

Default Settings

These settings assume a 1920x1080 source stream/sdi:

File0
Width = 1920;
Height = 1080; // 4:3 - 1440
BitRateAvg = 7800;
BitRatePeak = 8600;
FPSDivisor = 1;
AudioBitRate = 128;
Profile = 0x64; // High
Level = 41; //
File1
Width = 1280;
Height = 720; // 4:3 - 960
BitRateAvg = 6000;
BitRatePeak = 6500;
FPSDivisor = 1;
AudioBitRate = 128;
Profile = 0x64; // High
Level = 40; //
File2
Width = 1280;
Height = 720; // 4:3 - 960
BitRateAvg = 4500;
BitRatePeak = 5000;
FPSDivisor = 1;
AudioBitRate = 128;
Profile = 0x64; // High
Level = 41; //
File3
Width = 1280;
Height = 720; // 4:3 - 960
BitRateAvg = 3000;
BitRatePeak = 3300;
FPSDivisor = 1;
AudioBitRate = 96;
Profile = 0x4d; // Main
Level = 40; //
File4
Width = 960;
Height = 540; // 4:3 - 720
BitRateAvg = 2000;
BitRatePeak = 2200;
FPSDivisor = 1;
AudioBitRate = 96;
Profile = 0x4d; // Main
Level = 40; //
File5
Width = 768;
Height = 432; // 4:3 - 480
BitRateAvg = 1100;
BitRatePeak = 1200;
FPSDivisor = 1;
AudioBitRate = 96;
Profile = 0x4d; // Main
Level = 30; //
File6
Width = 640;
Height = 360; // 4:3 - 480
BitRateAvg = 730;
BitRatePeak = 800;
FPSDivisor = 1;
AudioBitRate = 64;
//
// BASELINE IS ENCODING AS MAIN IN x264
Profile = 0x4d; // Main
Level = 31; //
File7
Width = 480;
Height = 270; // 4:3 - 360
BitRateAvg = 365;
BitRatePeak = 400;
FPSDivisor = 2;
AudioBitRate = 64;
Profile = 0x4d; // Main
Level = 31; //
File8
Width = 416; // 4:3 - 400
Height = 234; // 4:3 - 300
BitRateAvg = 145;
BitRatePeak = 200;
FPSDivisor = 3;
AudioBitRate = 64;
Profile = 0x4d; // Main
Level = 30; //