________  ____ ____ 
     \_____  \/_   /_   |
      /   |   \|   ||   |
     /    |    \   ||   |
     \_______  /___||___|
             \/

    ott streamer v2 (cdb77362dsh)


		
Providers Streams Monitoring Config Users Recordings Playlist       Help

Description

O11 purpose is to convert LIVE and VOD streams to a friendly protocol such as HLS and/or direct http MpegTS.

The following input formats are currently supported

Dependencies

Executing program

You can list command line options using ./o11 -h


Providers  Provider selection page


This page is the default one, it’s a clickable list of the available providers.

To setup a provider logo, create a png file in logos/ which must be named [providerid].png. If not forced using ForcedId in the provider config, the provider Id is the provider name with lower case, no space and only alphanumericable chars (example: My Provider becomes myprovider)


Streams  Channels monitoring page


The FILTER select box allows to select the type of streams to filter.

Click on a stream to display it in the internal player (it must be already in running state or the OnDemand option should be selected). Note that playback will mostly fail under Chrome is the audio track is AC3 or the video track is not H264.


Config  Providers and streams configuration page


Providers

O11 supports multiple providers. Each provider will have its own set of streams and its own network configuration.

Go to Config tab, select a provider name and click on NEW PROVIDER. Provider configuration files will be stored into providers/ by default. This path can be changed using -providers [path] from command-line.

Clicking on RESCAN PROVIDERS will trigger a full scan of the providers/ directory for new provider configuration files.

The DELETE button will delete the currently selected provider. Its configuration file will only be deleted after clicking on SAVE ALL CONFIGS.

You can export a selection of streams or a full provider’s configuration using EXPORT SELECTION or EXPORT PROVIDER.

You can also import a new proviser using the IMPORT button.

Channels

To add a new channel to a provider, ho to Config tab and press ADD STREAM after entering its name in the field.

To delete a stream, click on its checkbox and press DELETE SELECTION. If the stream was running, it will be stopped first, then deleted.

Stream configuration

Stream options

Several options can be selected for each stream.

Network configuration

Network options can be configured globally for a provider and then overriden per stream.

All these network parameters can be overriden per channel, selecting the NetworkOverride option.

Scripts

Scripts play a big role for O11. Each provider should have each own script. It can be either a shell script (.sh) or a python3 script (.py).
When a script is configured, only it’s name body must be specify. O11 will first try to start the .sh extension and then .py one if not available.
Scripts must be stored in the scripts/ directory.

Let say we have a provider call provider1 which script name is provider.py, stored in scripts/provider.py.
This script must then be referenced as provider1 param1 param2 … inside the ManifestScript/CdmScript/EventsScript/ChannelsScript fields.

Depending on the type of script, it will automatically receive the following parameters, additionnaly to the ones configured by user.

When called, a script will receive, in addition to user selected ones, the following parameters:

An example of script can be found in scripts/example.py. It explains how to manage all actions.

Manifest script specifics

A manifest script should return a json formatted as followed:

{
    "ManifestUrl" : [manifest url],
    "Headers": {
	"Manifest": {
	    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
	    'Custom-Header': 'It's me',
	    ...
	},
	"Media": {
	    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
	    'Custom-Header': 'It's me',
	    ...
	}
    },
    "Heartbeat": {
	"Url" : [heartbeat url],
	"Params": [param1,param2,...],
	"PeriodMs" : 5*60*1000
    }
}
		

Cdm script specifics

A CDM script should return a list of kid:key formatted as followed:

kid1:key1
kid2:key2
...
		

Events/Channels script specifics

A events or channels script should return a list of streams following the same format as the config files:

{
  "[Channels or Events]": [
    {
      "Name": [name]",
      "ForcedId": "stream%auto%",
      "Mode": "live",
      "SessionManifest": true,
      "ManifestScript": "provider1 id=123 country=fr",
      "CdmType": "widevine",
      "UseCdm": true,
      "Cdm": "provider1 id=123 country=fr",
      "Video": "best",
      "OnDemand": true,
      "TsHls": true,
      "SpeedUp": true
    },
    {
      "Name": [name]",
      "ForcedId": "stream%auto%",
      "Mode": "live",
      "SessionManifest": true,
      "ManifestScript": "provider1 id=123 country=fr",
      "CdmType": "widevine",
      "UseCdm": true,
      "Cdm": "provider1 id=123 country=fr",
      "Video": "best",
      "OnDemand": true,
      "TsHls": true,
      "SpeedUp": true
    },
    ...
   ]
}
		

You will notice the "ForcedId": "stream%auto%", field that uses the special placeholed %auto%.
This placeholder will be automatically replaced by an incremental number by O11.


Users  Users configuration page


This page is used to manage users access.

When adding a new user, the following options are available:


Recordings  Streams recording management page


Playlist  Playlist including channels available to user