________ ____ ____ \_____ \/_ /_ | / | \| || | / | \ || | \_______ /___||___| \/ ott streamer v2 (cdb77362dsh)
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
You can list command line options using ./o11 -h
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)
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.
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.
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.
SessionManifest
option must be selected, please check the Scripts section for more details). Network ovverride fields will also appear in the box when the NetworkOverride
option is selected. Press the R
button to parse the manifest and refresh the tracks list.UseCdm
, O11 will try to call the selected Cdm script to get keys. Please check the Scripts section for more detail.Several options can be selected for each stream.
-noautostart
command-line option.Network options can be configured globally for a provider and then overriden per stream.
http://user:pass@ip:port
All these network parameters can be overriden per channel, selecting the NetworkOverride
option.
Manifest Param: global list of parameters to add to manifest script call (param1 param2…).
Cdm Param: global list of parameters to add to cdm script call (param1 param2…).
Max concurrency: no limit (0), by default. Else limit the maximum number of streams that can run per provider.
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.
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
}
}
A CDM script should return a list of kid:key formatted as followed:
kid1:key1
kid2:key2
...
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.
This page is used to manage users access.
When adding a new user, the following options are available:
Users
and Config
pages.